C#代码示例:在WinForm中创建并绑定一个DataTable

在我的一篇文章中,我解释了如何在没有数据库的情况下以web形式绑定gridview。这里,我将解释如何在没有数据库的windows窗体中绑定datagrid。

当我们使用windows窗体或web窗体时,这个需求非常有用。我的要求很简单。当我们输入所有字段并单击Book按钮时。它将暂时将数据绑定到如下所示的数据网格。我已经展示了下面的截图:

我们来看看怎么做,以下是实现步骤。

1、创建一个数据表。

2、通过需要数据类型来创建列名column或标题。

3、将此列column添加到datatable

4、创建一个包含输入控件所有值的行。

5、将datatable绑定到Datagrid。

在做这个之前,我们需要先添加一个命名空间。

usingSystem.Data;

Step 1: 创建数据表

DataTabledt=newDataTable();

Step 2: 创建数据列

DataColumndc1=newDataColumn("PERSONAL NO",typeof(int));

DataColumndc2=newDataColumn("NAME",typeof(string));

DataColumndc3=newDataColumn("DATE",typeof(string));

DataColumndc4=newDataColumn("QUANTITY",typeof(int));

DataColumndc5=newDataColumn("TYPE",typeof(string));

Step 3: 添加这些列Columns 到 DataTable,

dt.Columns.Add(dc1);

dt.Columns.Add(dc2);

dt.Columns.Add(dc3);

dt.Columns.Add(dc4);

dt.Columns.Add(dc5);

Step 4: 创建一个行对象

dt.Rows.Add(txt_personalNo.Text,txt_name.Text,txt_date.Text,Convert.ToInt32(txt_quantity.Text),cmb_type.SelectedItem.ToString());

Step 5:数据绑定datatable 到 datagrid:

dataGridView1.DataSource=dt;

这些就是完整代码,很简单,还需要把这些代码添加到一个方法里,并在按钮单击时调用该方法。

publicvoidcreatenewrow()

{

DataTabledt=newDataTable();

DataColumndc1=newDataColumn("PERSONAL NO",typeof(int));

DataColumndc2=newDataColumn("NAME",typeof(string));

DataColumndc3=newDataColumn("DATE",typeof(string));

DataColumndc4=newDataColumn("QUANTITY",typeof(int));

DataColumndc5=newDataColumn("TYPE",typeof(string));

dt.Columns.Add(dc1);

dt.Columns.Add(dc2);

dt.Columns.Add(dc3);

dt.Columns.Add(dc4);

dt.Columns.Add(dc5);

dt.Rows.Add(txt_personalNo.Text,txt_name.Text,txt_date.Text,Convert.ToInt32(txt_quantity.Text),cmb_type.SelectedItem.ToString());

dataGridView1.DataSource=dt;

}

privatevoidbtn_book_Click(objectsender,EventArgse)

{

createnewrow();

}

现在在Book按钮上调用这个方法。

这样,我们就可以在windows窗体应用程序中绑定一个没有数据库的datagrid。

对于维护这个datagrid的状态,现在用户面临的问题是什么。

在输入第一次预订的详细信息后,当我进行第二次预订时,第一次预订的详细信息将会丢失,因此为了防止这种情况发生,您必须稍微修改一下代码。在这里,我已经解释了如何做到这一点。

在将行绑定到datagrid时,输入一个条件。首先,检查该数据表中是否有数据。如果没有数据,则绑定datagrid中的列标头,否则只绑定没有datacolumn标头的行。

这里是第一个更改:声明datatable全局变量。

publicpartialclassLunchDinnerBookingEntry:Form

{

CanteenBALobj=newCanteenBAL();

DataTabledt=newDataTable();

publicLunchDinnerBookingEntry()

{

InitializeComponent();

}

接着绑定时添加条件判断。

publicvoidcreatenewrow()

{

if(dt.Rows.Count

{

DataColumndc1=newDataColumn("PERSONAL NO",typeof(int));

DataColumndc2=newDataColumn("NAME",typeof(string));

DataColumndc3=newDataColumn("DATE",typeof(string));

DataColumndc4=newDataColumn("QUANTITY",typeof(int));

DataColumndc5=newDataColumn("TYPE",typeof(string));

dt.Columns.Add(dc1);

dt.Columns.Add(dc2);

dt.Columns.Add(dc3);

dt.Columns.Add(dc4);

dt.Columns.Add(dc5);

dt.Rows.Add(txt_personalNo.Text,txt_name.Text,

txt_date.Text,Convert.ToInt32(txt_quantity.Text),cmb_type.SelectedItem.ToString());

dataGridView1.DataSource=dt;

}

else

{

dt.Rows.Add(txt_personalNo.Text,txt_name.Text,

txt_date.Text,Convert.ToInt32(txt_quantity.Text),cmb_type.SelectedItem.ToString());

dataGridView1.DataSource=dt;

}

因此,通过这种方式,我们就可以在windows应用程序中维护datatable状态。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180626A1SM9I00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券