日期:2014-05-19  浏览次数:20464 次

DataGrid 排序的问题
DataGrid的数据共有四列。如下:
列名1             列名2               列3           列4
张三                 25                     团员         1365
李四                 22                     群众         1700
王五                 30                     党员         1622

上面的四列中,列1、列2和列3是直接用SQL取出来的。而列4是在DataGrid属性ItemDataBound中填充进去的。现在我想根据“列4”进行排序,请问如何做?


------解决方案--------------------
DataTable dt = new DataTable();
dt.Columns.Add( "name ",typeof(System.String));
dt.Columns.Add( "No ",typeof(System.String));
//假如你绑定的数据是这样
DataRow dr = dt.NewRow();
dr[ "name "] = "张三 ";
dr[ "No "] = "001 ";
dt.Rows.Add(dr);

DataRow dr1 = dt.NewRow();
dr1[ "name "] = "李四 ";
dr1[ "No "] = "002 ";
dt.Rows.Add(dr1);

//现在只有两列 name 和 No
//再+一列 sex
DataColumn dc = new DataColumn();
dc.ColumnName = "sex ";
dt.Columns.Add(dc);
//然后在新列中添加值
for(int i=0;i <dt.Rows.Count;i++)
{
if(dt.Rows[i][ "name "].ToString()== "张三 ")
dt.Rows[i][ "sex "] = "男 ";
if(dt.Rows[i][ "name "].ToString()== "李四 ")
dt.Rows[i][ "sex "] = "女 ";
}
DataGrid1.DataSource = dt;
DataGrid1.DataBind();

仅供参考 说错勿怪
------解决方案--------------------
从SQL中获取DataTable之后
dt.columns.add( "列4 ");
foreach(datarow dr in dt.rows)
{
dr[ "列4 "] = "xxx ";
}
DataView dv = dt.DefaultView;
dv.Sort = "列4 ";
datagrid.datasource = dv;
datagrid.databind;