当前位置: 代码迷 >> ASP.NET >> DataTable 排序后绑定有关问题
  详细解决方案

DataTable 排序后绑定有关问题

热度:6537   发布时间:2013-02-25 00:00:00.0
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
  相关解决方案