DataGridView和DataTable的使用

我们在实际编程中,经常会用到DataGridView来显示数据,而且可以通过过滤的方式查找需要的数据。这篇文章主要是讲显示数据的,然后通过过滤的方式查看你想要的内容。我的思路是设置字段来初始化DataTable,并且将DataTable的DefaultView绑定到DataGridView,将数据赋值到DataTable,在文本框输入内容,使用DataTable的RowFilter进行过滤数据,查找您需要的数据。我写这篇文章主要就是想分享我自己的使用datatable的困惑而已。我的使用很简单,只要将DataTable的数据显示到DataGridView中,并且可以通过文本框进行过滤数据。

首先,分享一下我的界面,文本框用来输入查找信息,DataGridView用来显示数据,并且随着文本框录入的内容而变化,如下图所示:



其次,我主要讲一下代码实现

(1)初始化DataTable,并将datatable绑定到DataGridView的数据源

	private DataTable dt = new DataTable();

        private void InitDatable()
        {
            //新建列
            DataColumn col1 = new DataColumn("姓名", typeof(string));
            DataColumn col2 = new DataColumn("性别", typeof(string));
            DataColumn col3 = new DataColumn("出生日期", typeof(string));
            DataColumn col4 = new DataColumn("身份证号码", typeof(string));
            DataColumn col5 = new DataColumn("出生地址", typeof(string));
            DataColumn col6 = new DataColumn("户籍地址", typeof(string));
            DataColumn col7 = new DataColumn("实际居住地址", typeof(string));
            DataColumn col8 = new DataColumn("ID", typeof(string));
            //添加列
            dt.Columns.Add(col1);
            dt.Columns.Add(col2);
            dt.Columns.Add(col3);
            dt.Columns.Add(col4);
            dt.Columns.Add(col5);
            dt.Columns.Add(col6);
            dt.Columns.Add(col7);
            dt.Columns.Add(col8);

            this.dataGridView1.DataSource = dt.DefaultView;
        }

(2)DataTable增加数据,先请空行的信息

	    dt.Rows.Clear();//清空数据

            foreach (HumanInfo hi in list)
            {
                DataRow dr = dt.NewRow();//新增行
                dr[0] = hi.Name;
                dr[1] = hi.Sex;
                dr[2] = hi.Date_of_birth.ToString("yyyy-MM-dd");
                dr[3] = hi.Id_no;
                dr[4] = hi.Birth_place2;
                dr[5] = hi.Mailing_address2;
                dr[6] = hi.Mailing_address4;
                dr[7] = hi.Patient_id;

                this.dt.Rows.Add(dr);//增加行
	     }


(3)过滤,这个主要是使用TextBox的TextChanged事件,“this.dt.DefaultView.RowFilter = filterStr;”这个语句就是将过滤的字符串赋值给datatable,如下代码所示:

	private void txtFilter_TextChanged(object sender, EventArgs e)
        {
            string filter = "%"+ txtFilter.Text +"%";

            Filter(filter);
        }

        /// <summary>
        /// 过滤
        /// </summary>
        /// <param name="queryInfo"></param>
        private void Filter(string queryInfo)
        {
            string filterStr = "姓名 like '{0}' or 性别 like '{0}' or 出生日期 like '{0}' or 出生地址  like '{0}' or 户籍地址 like '{0}' or 身份证号码 like '{0}' or 实际居住地址  like '{0}' or ID like '{0}'";

            if (string.IsNullOrEmpty(queryInfo))
            {
                filterStr = " 1=1 ";
            }
            else
            {
                filterStr = string.Format(filterStr, queryInfo);
            }

            this.dt.DefaultView.RowFilter = filterStr;
        }

这三个功能好好利用就可以实现我们提出的问题了。


  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

panliuwen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值