日期:2014-05-18  浏览次数:20499 次

DataTable 排序后绑定问题
DataView dv = dt.DefaultView;
dv.Sort="ID DESC";
DataGrid1.DataSource = dt;
DataGrid1.DataBind();
----------------------
排序没有任何问题

可是现在 需求是 还要遍历DataTable 才能绑定

DataView dv = dt.DefaultView;
dv.Sort="ID DESC";
DataTable dt = Table.Clone();
DataRow dr;
for (int i=0; i < Table.Rows.Count; i++)
{
dr = dt.NewRow();
dr.ItemArray = Table.Rows[i].ItemArray;
dt.Rows.Add(dr);
}
DataGrid1.DataSource = dt;
DataGrid1.DataBind();

这样绑定后的结果 就不是排序的了为什么啊 要疯了
排序必须在遍历前进行 有没有高人帮我看看 谢谢了


------解决方案--------------------
DataTable dt = Table.Clone(); 
DataRow dr; 
for (int i=0; i < Table.Rows.Count; i++) 

dr = dt.NewRow(); 
dr.ItemArray = Table.Rows[i].ItemArray; 
dt.Rows.Add(dr); 

DataView dv = dt.DefaultView; 
dv.Sort="ID DESC"; 

DataGrid1.DataSource = dv; 
DataGrid1.DataBind(); 


------解决方案--------------------
直接用datagrid控件对ID排序
把AllowSorting属性为true
------解决方案--------------------
DataView dv = dt.DefaultView; 
dv.Sort="ID DESC"; 
DataTable dt = Table.Clone(); 
DataRow dr; 

----------这里是给datatable增加新行,建议增加新行后,再进行排序。
for (int i=0; i < Table.Rows.Count; i++) 

dr = dt.NewRow(); 
dr.ItemArray = Table.Rows[i].ItemArray; 
dt.Rows.Add(dr); 

---------------------------
DataGrid1.DataSource = dt; 
DataGrid1.DataBind(); 

改为:
DataRow dr; 
for (int i=0; i < Table.Rows.Count; i++) 

dr = dt.NewRow(); 
dr.ItemArray = Table.Rows[i].ItemArray; 
dt.Rows.Add(dr); 

DataView dv = dt.DefaultView; 
dv.Sort="ID DESC"; 
DataTable dt = Table.Clone(); 
DataGrid1.DataSource = dv; 
DataGrid1.DataBind(); 


------解决方案--------------------
最后绑定DataView,别绑定DataTable