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

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

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

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

1、创建一个数据表。

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

3、将此列column添加到datatable

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

5、将datatable绑定到Datagrid。

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

using System.Data;

Step 1: 创建数据表

DataTable dt = new DataTable();

Step 2: 创建数据列

DataColumn dc1 = new DataColumn("PERSONAL NO", typeof(int));    
DataColumn dc2 = new DataColumn("NAME", typeof(string));    
DataColumn dc3 = new DataColumn("DATE", typeof(string));    
DataColumn dc4 = new DataColumn("QUANTITY", typeof(int));    
DataColumn dc5 = new DataColumn("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;

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

public void createnewrow()  
{  
    DataTable dt = new DataTable();  
    DataColumn dc1 = new DataColumn("PERSONAL NO", typeof(int));  
    DataColumn dc2 = new DataColumn("NAME", typeof(string));  
    DataColumn dc3 = new DataColumn("DATE", typeof(string));  
    DataColumn dc4 = new DataColumn("QUANTITY", typeof(int));  
    DataColumn dc5 = new DataColumn("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;  
}
private void btn_book_Click(object sender, EventArgs e)  
{  
createnewrow();  
}

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

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

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

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

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

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

public partial class LunchDinnerBookingEntry : Form  
  {  
      CanteenBAL obj = new CanteenBAL();  
       DataTable dt = new DataTable();  
      public LunchDinnerBookingEntry()  
      {  
          InitializeComponent();  
      }

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

public void createnewrow()  
        {  
            if(dt.Rows.Count<=0)  
            {  

                DataColumn dc1 = new DataColumn("PERSONAL NO", typeof(int));  
                DataColumn dc2 = new DataColumn("NAME", typeof(string));  
                DataColumn dc3 = new DataColumn("DATE", typeof(string));  
                DataColumn dc4 = new DataColumn("QUANTITY", typeof(int));  
                DataColumn dc5 = new DataColumn("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状态。

原文发布于微信公众号 - 程序你好(codinghello)

原文发表时间:2018-06-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

C# winforms 输入颜色转换颜色名

本文告诉大家如何输入颜色,如0xFFFF8000转换为 Orange 在 winforms 程序

1362
来自专栏Core Net

C# 处理Word自动生成报告 四、程序处理

5107
来自专栏blackheart的专栏

实用代码-C#获取本机网络适配器信息及MAC地址

System.Net.NetworkInformation空间提供对网络流量数据、网络地址信息和本地计算机的地址更改通知的访问。该命名空间还包含实现 Ping ...

2209
来自专栏hbbliyong

WCF发布多个服务

using System; using System.Collections.Generic; using System.Linq; using System....

3705
来自专栏Kotlin入门系列

C#控制台基础 VS2017中为控制台程序设置启动参数(string[] args)

2274
来自专栏跟着阿笨一起玩NET

winform如何保持TreeView节点展开和折叠的状态

转载:http://blog.sina.com.cn/s/blog_6abcacf5010138q5.html

1681
来自专栏飞扬的花生

合并两个结构完全相同的DataTable

两个结构一模一样的DataTable如何合并? 例子:使用Winform进行演示,表2的数据为固定的,表1的数据可以动态添加,通过合并按钮合并表1和表2的数据到...

2095
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:快速实现手机上常见的GridView

新建MobileForm项,命名为MessageShow2,并拖入一个Image控件和三个Label控件,如图1

1222
来自专栏跟着阿笨一起玩NET

ASP.NET中Cookie跨域的问题及解决代码

http://www.liyumei.net.cn/post/share18.html

1061
来自专栏偏前端工程师的驿站

GridView实战二:使用ObjectDataSource数据源控件

前言:   ObjectDataSource数据源控件优点甚多,确实令人爱不惜手,但不支持重绑定这一项确实让人失望。下面的实战二将通过ObjectDataSou...

29010

扫码关注云+社区