區別:
綁定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"])));
}