读书人

不知道大家都是怎么办的:关于排序后再

发布时间: 2012-01-07 21:41:55 作者: rapoo

不知道大家都是怎么处理的:关于排序后再点页码后就失去排序记忆了。。。。20分
这是我的排序和分页代码:

int startindex;
public void Page_Load(Object sender, EventArgs e)
{
if(!IsPostBack)
{
tobind();
}
}

public void tochange(Object sender,DataGridPageChangedEventArgs e)
{
startindex=e.NewPageIndex*mygrid.PageSize;
mygrid.CurrentPageIndex=e.NewPageIndex;
tobind();
}

public void tobind()
{
OleDbConnection conn=new OleDbConnection(ConfigurationSettings.AppSettings[ "data "]+Server.MapPath(ConfigurationSettings.AppSettings[ "path "]));
conn.Open();
string sql= "select * FROM aa ";
OleDbDataAdapter da=new OleDbDataAdapter(sql,conn);
DataSet ds=new DataSet() ;
da.Fill (ds, "aa ");
mygrid.DataSource =ds;
mygrid.DataBind();
}

public void dgsort(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
if(ViewState[ "order "]==null) //这个是 隐藏控件
{
ViewState[ "order "]= "ASC ";
}
else
{
if(ViewState[ "order "].ToString()== "ASC ")
{
ViewState[ "order "]= "DESC ";
}
else
{
ViewState[ "order "]= "ASC " ;
}
}//第一次生续,第二次点击,显示的降续
//数据显示
OleDbConnection conn=new OleDbConnection(ConfigurationSettings.AppSettings[ "data "]+Server.MapPath(ConfigurationSettings.AppSettings[ "path "]));
conn.Open();
string sql= "select * FROM aa ";
OleDbDataAdapter da=new OleDbDataAdapter(sql,conn);
DataSet ds=new DataSet() ;
da.Fill (ds, "aa ");
ds.Tables[ "aa "].DefaultView.Sort=e.SortExpression+ " "+ViewState[ "order "].ToString();//这句是关键
this.mygrid.DataSource=ds.Tables[ "aa "].DefaultView;// BANGDING 视图
this.mygrid.DataBind();
}


可能我说的不是很清楚,我解释下:我打开页面后点排序一切正常,但是我点分页的时候排序就是按照默认的排序方式,请问有方法可以改吗?就叫它点了排序后能记忆下排序方式,无论怎么点页码都是按照你的那个排序方式来排的。再点下排序方式就换过来了,20分太少,无奈本人菜鸟一个,也是穷光蛋一个,哈哈,现实也是如此4无人员无车无房无老婆无存款。。。。希望能得到你们的帮助谢谢。

[解决办法]
呵呵,这个是分页控件的问题,你在绑定分页的数据源和你排序(查询)的数据源不匹配造成的;
就是你排序的数据在点击其他页的时候就重新回到了你默认的数据上面去了,你做到数据源的同步就好了(这个要结合你的代码进行修改)

读书人网 >asp.net

热点推荐