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"];

 

c# DataGridView datasource綁定datatable 與dataview的區別_第1张图片

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"])));
            }

c# DataGridView datasource綁定datatable 與dataview的區別_第2张图片

 

你可能感兴趣的:(Winform,基础知识)