C#.Net高手帮忙,看下我的代码中GridView为什么不能实现排序功能!!

C#.Net高手帮忙,看下我的代码中GridView为什么不能实现排序功能!!,第1张

Page_Load事件:

if (Session["UserName"] != null)

{

TB_ProductPrice.Text = Session["UserName"].ToString();

if (!IsPostBack)

{

ViewState["SortExpression"] = "ID"//第一次加载时,默认按ID排序

ViewState["SortDir"] = "ASC"//排序方式为升序

DBind()

}

}

Gridview_Sorting事件:

//首先判断当前的排序表达式(字段),是否为当前当前的表达式。。。

if (ViewState["SortExpression"].ToString() == e.SortExpression.ToString())

{

//判断当前的排序方式是否为倒序(DESC),如果是则将排序方式设为升序(ASC),原因是:因为我们要做双向排序!

if (ViewState["SortDir"].ToString() == "DESC")

{

ViewState["SortDir"] = "ASC"

}

else

{

ViewState["SortDir"] = "DESC"

}

}

else

{

ViewState["SortExpression"] = e.SortExpression//将触发到表达式赋值给ViewState["SortExpression"]

}

DBind()

private void DBind()

{

DataView dv = new DataView(CreateTable())

dv.Sort = (string)ViewState["SortExpression"] + " " + ViewState["SortDir"].ToString()//设置数据源的排序表达式

this.GridView1.DataSource = dv

this.GridView1.DataBind()

}

现在看明白了没?

如果你的排序函数是写在前台的,可以通过以下函数为标题添加单击事件。

this.GridView1.HeaderRow.Cells[3].Text = "zxj"

this.GridView1.HeaderRow.Cells[3].Attributes.Add("onclick", "test()")//test为前台的JS函数。

如果你是写在后台的,那就在前台这个函数中回调后台函数,不过这样实现起来比较复杂,具体我也写不出来,不过肯定是能实现的。

但是个人觉得就个排序功能没必要弄的这么复杂啊。而且GRIDVIEW自带排序功能的。

你可以把标题列也直接绑定数据啊,然后自动打开GRIDVIEW的排序功能就可以了啊。

this.GridView1.AllowSorting = true//设置GridView的AllowSorting属性为TURE即可实现排序功能了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/55040.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-26
下一篇2023-02-26

发表评论

登录后才能评论

评论列表(0条)

    保存