c# DataGridView datasource綁定datatable 與dataview的區別

區別:

綁定datatable:datagridview重排序后不會同步更新datatable,兩者按索引獲取數據是不一樣的;

綁定dataview: datagridview重排序后會同步更新dataview,兩者按索引獲取數據是一樣的;

 

例子:

假如 有DataGridView dgv; DataView dv; DataTable dt 3個對象都已初始化。

1. dgv的DataSource设为dt

 如果點擊DataGridView對数据進行排序,此時数据源dt的数据不會同步進行排序,這樣datagridview顯示的數據排序與dt 的就會不一樣,如果用索引獲取取数据会导致数据混亂,

dgv.Rows[索引號]["Id"].value可能 不等于 dt.Rows[索引號]["Id"];

 

2. dgv的DataSource设为DataView
  如果dgv中的数据排序后,dt.DefaultView视图中的数据也同步排序了。

按索引號列出列 Id的值
 

Console.WriteLine("DatagridView");
            for (int i = 0; i < dgv.Rows.Count; i++)
            {
                Console.WriteLine (string.Format ("Row:{0}---Id:{1}",i.ToString (), dgv .Rows [i].Cells["Id"].Value ));
            }
            DataView  dv = (DataView)dgv.DataSource;
 Console.WriteLine("DataSource-->DataView");
            for (int j = 0; j < dv.Count; j++)
            {
                Console.WriteLine(string.Format("Row:{0}---Id{1}", j.ToString(), Convert.ToString(dv[j]["Id"])));
            }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值