求救:在datagrid中同时用了分页和排序,排序完成后,如果按了下一页,排序又错了,如何解决?
在datagrid中同时用了分页和排序,排序完成后,如果按了下一页,排序又错了,如何解决? 问题点数:0、回复次数:3Top
1 楼graybelt(灰色地带)回复于 2004-08-03 01:51:34 得分 0
如果是WEBFORM可以把排序的方式存在SESSION里
如:
Session["orderby"]=asc;
在DATAGRID排序事件里写
private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
if(Session["orderby"]=="asc")
{
Session["orderby"]=="desc";
}
else
{
Session["orderby"]=="asc";
}
conn=new SqlConnection("server=localhost;uid=sa;pwd=123;database=pubs");
string str="select * from authors order by au_fname "+Session["orderby"];
SqlDataAdapter da=new SqlDataAdapter(str,conn);
DataSet ds=new DataSet();
conn.Open();
da.Fill(ds,"authors");
DataGrid1.DataSource=ds.Tables["authors"].DefaultView;
DataGrid1.DataBind();
}
如果是WINFORM
新建一个类ORDER
类里边声明一个静态STRING变量 by 默认是asc
写法和Session的大体一致
private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
if(ORDER.BY=="asc")
{
ORDER.BY=="desc";
}
else
{
ORDER.BY=="asc";
}
conn=new SqlConnection("server=localhost;uid=sa;pwd=123;database=pubs");
string str="select * from authors order by au_fname "+ORDER.BY;
SqlDataAdapter da=new SqlDataAdapter(str,conn);
DataSet ds=new DataSet();
conn.Open();
da.Fill(ds,"authors");
DataGrid1.DataSource=ds.Tables["authors"].DefaultView;
DataGrid1.DataBind();
}
我觉得这样应该就可以保存了Top
2 楼zouyi(zouyi)回复于 2004-08-06 12:29:57 得分 0
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex;
oleDbDataAdapter1.Fill(dataSet21);
DataView sr=dataSet21.Tables[0].DefaultView;
sr.Sort=(string)ViewState["SortExpression"];
System.Diagnostics.Trace.WriteLine(sr.Sort);
DataGrid1.DataSource=sr;
DataGrid1.DataBind();
}
private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
oleDbDataAdapter1.Fill(dataSet21);
DataView sr=dataSet21.Tables[0].DefaultView;
sr.Sort=e.SortExpression;
ViewState["SortExpression"]=e.SortExpression;
System.Diagnostics.Trace.WriteLine(sr.Sort);
DataGrid1.DataSource=sr;
DataGrid1.DataBind();
}Top
3 楼WYZSC(007,重在参乎,说错问错勿怪。)回复于 2004-08-14 11:03:05 得分 0
upTop




