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

gridview分页后的排序问题???
gridview+存储过程显示数据 每页20条记录

怎样在每页显示的数据上点不同的列名进行排序?(排序应只对本页显示数据进行排序)

------解决方案--------------------
如果你是绑定控件的,在编辑列里的绑定列里添加这个属性就可以了:
SortExpression
比如:
HTML code

<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="字段名"。