日期:2014-05-18 浏览次数:20465 次
<asp:BoundField DataField="AutoID" HeaderText="自增号" SortExpression="AutoID" />
------解决方案--------------------
我记得是数据源全部数据一起进行排序,没试过当前页的排序……
------解决方案--------------------
1.首先先要设置gridview的AllowSorting属性为了true.
2.设置要做排序的列sortexpression 属性里面附值.假设为 "name" //即想按名称排序
3.创建gridview的sorting事件.之后在里面可以根据委托事件,e.sortexpression取到name.之后将名称可以附给定义的变量.
正常绑定Gridview后。Sorting事件中写如下代码:
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
//这里是判断是递增还是递减,开始给一个默认之后点一次变一次.lbsort.text是在页面我隐藏的一个控件.
if (lbSort.Text == "desc")
{
lbSort.Text = "asc";
}
else
{
lbSort.Text = "desc";
}
string column = e.SortExpression.ToString();
sortBind(column);
}
private void sortBind(string column)
{
string strsql = "select * from hr_staff where Tel <> '' ";
DbAccess db = new DbAccess();
db.GetConn();
db.MakeSqlCommand(strsql, 0);
DataTable dt = db.ExecuteForDataSet("tb1");
if (dt.Rows.Count != 0)
{
DataView dv = dt.DefaultView;
dv.Sort = column + " " + lbSort.Text.ToString();//desc或者asc可以写在隐藏的lable里
this.GridView1.DataSource = dv;
this.GridView1.DataBind();
}
}
在html页面,需要排序的字段设置SortExpression="字段名"。