Datagrid升序,降序问题!急~

zcc26212 2006-08-29 11:27:48
我本意是实现 datagrid排序功能!每次点击列名,都按照一次升序一次降序这样排序.但是只有降序没有升序,这是那里的错误啊!
代码如下:
<aspx.cs中!>
public void DataList_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
ViewState["DataSortExpression"]=e.SortExpression;
string newExpr=e.SortExpression;
string oldExpr=(string)ViewState["DataSortExpression"];
DataSet ds=new DataSet();
ds=(DataSet)Context.Cache["ID"];
if(ds==null)
{
ds=DbU.GetDS(text);//获取dataset
Context.Cache.Insert("ID",ds);
}
if(oldExpr==newExpr)
{
ViewState["DataSortExpression"]=newExpr+" DESC";
}
else
{
ViewState["DataSortExpression"]=newExpr+" ASC";
}
DataView dataview=new DataView();
dataview=ds.Tables[0].DefaultView;
dataview.Sort=(string)ViewState["DataSortExpression"];
DataList.DataSource=dataview;
DataList.DataBind();
}
<aspx中>
<Columns>
<asp:BoundColumn DataField="dlyh" HeaderText="用户名"></asp:BoundColumn>
<asp:BoundColumn DataField="dlmm" HeaderText="密 码"></asp:BoundColumn>
<asp:BoundColumn DataField="kjkh" HeaderText="井 号" SortExpression="kjkh"></asp:BoundColumn>
<asp:BoundColumn DataField="dljb" HeaderText="权 限"></asp:BoundColumn>
</Columns>
...全文
122 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcc26212 2006-08-30
  • 打赏
  • 举报
回复
自己顶 郁闷
zcc26212 2006-08-30
  • 打赏
  • 举报
回复
郁闷阿!为什么我在属性生成器中用BoundColumn生成的列,只能一次排序(也就是说只能点击一次!),但是不用BoundColumn生成,也就是用代马在cs里面邦定就可以实现升降排序呢!球高人指教阿!
zcc26212 2006-08-29
  • 打赏
  • 举报
回复
谁能帮帮我!谢谢了!
Eddie005 2006-08-29
  • 打赏
  • 举报
回复
完整例子:
public string SortField//当前排序字段
{
get
{
return (ViewState["SortField"]==null)?string.Empty:ViewState["SortField"].ToString();
}
set
{
ViewState["SortField"] = value;
}
}
public string SortMode//当前排序方式:ASC/DESC
{
get
{
return (ViewState["SortMode"]==null)?string.Empty:ViewState["SortMode"].ToString();
}
set
{
ViewState["SortMode"] = value;
}
}

private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
this.BindData(null);
}
}

private void BindData(string sortExpress)
{
DataTable dt = new DataTable();
dt.Columns.Add("id");dt.Columns.Add("message");dt.Columns.Add("date");

//这只是些测试数据:
dt.Rows.Add(new object[]{"aga",70,DateTime.Now.AddDays(1)});
dt.Rows.Add(new object[]{"aweg",DateTime.Now.AddDays(10)});
dt.Rows.Add(new object[]{"a4haaa",2,DateTime.Now.AddDays(13)});
dt.Rows.Add(new object[]{"drjtakab",12,DateTime.Now.AddDays(19)});
dt.Rows.Add(new object[]{"hsraac",22,DateTime.Now.AddDays(11)});
dt.Rows.Add(new object[]{"jdrtb",50});
dt.Rows.Add(new object[]{"drtb111",DateTime.Now.AddDays(7)});
dt.Rows.Add(new object[]{"kfb111-111",2});
dt.Rows.Add(new object[]{"brth1",3});
dt.Rows.Add(new object[]{"mdrth",5,DateTime.Now.AddDays(-5)});
dt.Rows.Add(new object[]{"serc",0});
dt.Rows.Add(new object[]{"ag3ca",4,DateTime.Now});
dt.AcceptChanges();

DataView dv = dt.DefaultView;
if(sortExpress!=null) dv.Sort = sortExpress;

this.DataGrid1.DataSource = dt;
this.DataGrid1.DataBind();

}

private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{

if(this.SortField == e.SortExpression )
{

if(this.SortMode == " ASC")
this.SortMode = " DESC";
else if(this.SortField == " Desc")
this.SortMode = " ASC";
else
this.SortMode = " ASC";
}
else
{
this.SortMode = " ASC";
}

this.SortField = e.SortExpression;

this.BindData(this.SortField + this.SortMode);
}
zcc26212 2006-08-29
  • 打赏
  • 举报
回复
谁能帮帮我!*_*
zcc26212 2006-08-29
  • 打赏
  • 举报
回复
按照xray2005(特意把社区昵称写的很长,只是为了看看最多能输入多少字符!)
的办法还是不行 郁闷啊!
xray2005 2006-08-29
  • 打赏
  • 举报
回复
LZ试试:
ViewState["DataSortExpression"]=e.SortExpression;
string newExpr=e.SortExpression;
string oldExpr=(string)ViewState["DataSortExpression"];

换成:
string oldExpr=(string)ViewState["DataSortExpression"];
ViewState["DataSortExpression"]=e.SortExpression;
string newExpr=e.SortExpression;
Eddie005 2006-08-29
  • 打赏
  • 举报
回复
下面这3行代码明显有逻辑错误,你到底是要把哪个值赋到哪里呢?

ViewState["DataSortExpression"]=e.SortExpression;
string newExpr=e.SortExpression;
string oldExpr=(string)ViewState["DataSortExpression"];
xray2005 2006-08-29
  • 打赏
  • 举报
回复
这个功能常见哈,学习ing 。。。。。。。。。。

帮LZ UP

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧