遇到一个需求:GirdView 表:
用户希望触发列头排序OnSorting的时候 同时 将 列头显示内容 "金额<" 改为 "金额>",
<asp:BoundField HeaderText="金额&
lt;" SortExpression=" price" DataField="price" ItemStyle-HorizontalAlign="Center" DataFormatString="{0:F}" />
,我希望在利用GirdView绑定上解决,而不是换成repeater控件,换成其他控件工程量太大,不好改,各位道友有什么好的建议吗
How to Perform Sorting in Gridview in ASP.NET
不清楚你是不懂排序,还是不懂在COLUMN Header上修改标题,随便转个链接,你自己慢慢看吧。
排序没有问题,就是用户要求 在排序的时候 同时将 COLUMN Header标题进行更改, 列头文本 "金额<" 改为 "金额>",这样客户能够根据列头Header 知道自己当前进行的是 升序排列还是 降序排列, (当然文本不一定是"<"或者 “>”这个符号,特殊符号无法显示,只好用"<"">"代替) , 有办法解决吗
@不老的石头:
你没有看那篇文章吗?
Image sortImage = new Image(); protected void SetSortDirection(string sortDirection) { if (sortDirection == "ASC") { _sortDirection = "DESC"; sortImage.ImageUrl = "view_sort_ascending.png"; } else { _sortDirection = "ASC"; sortImage.ImageUrl = "view_sort_descending.png"; } }
@爱编程的大叔: 当时想到用html拼接头的方法,没来得急测试你推荐的方法,测试了,可以解决我的需求,非常感谢
protected void gvOrdersSourceDistribution_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = e.SortExpression; int columnIndex = 0; foreach (DataControlFieldHeaderCell headerCell in gvOrdersSourceDistribution.HeaderRow.Cells) { if (headerCell.ContainingField.SortExpression == e.SortExpression) { columnIndex = gvOrdersSourceDistribution.HeaderRow.Cells.GetCellIndex(headerCell); } }
if (GridViewSortDirection == SortDirection.Ascending) //设置排序方向:升序变成降序 { GridViewSortDirection = SortDirection.Descending; SortGridView(sortExpression, " DESC"); } else { GridViewSortDirection = SortDirection.Ascending;//设置排序方向:降序变成升序 SortGridView(sortExpression, " ASC"); } this.gvOrdersSourceDistribution.HeaderRow.Cells[columnIndex].Text = "测试,可以这样改变头"; }
@爱编程的大叔: 当时想到用html拼接头的方法,没来得急测试你推荐的方法,测试了,可以解决我的需求,非常感谢
protected void gvOrdersSourceDistribution_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = e.SortExpression; int columnIndex = 0; foreach (DataControlFieldHeaderCell headerCell in gvOrdersSourceDistribution.HeaderRow.Cells) { if (headerCell.ContainingField.SortExpression == e.SortExpression) { columnIndex = gvOrdersSourceDistribution.HeaderRow.Cells.GetCellIndex(headerCell); } } if (GridViewSortDirection == SortDirection.Ascending) //设置排序方向:升序变成降序 { GridViewSortDirection = SortDirection.Descending; SortGridView(sortExpression, " DESC"); } else { GridViewSortDirection = SortDirection.Ascending;//设置排序方向:降序变成升序 SortGridView(sortExpression, " ASC"); } this.gvOrdersSourceDistribution.HeaderRow.Cells[columnIndex].Text = "测试"; }
这个~~说实话 web的服务器控件已经很少用了,
你可以尝试一下,加一个点击事件,
或是在排序事件里面写一下.
排序事件里无法获得列头文本
@不老的石头: 知道点击的哪个列,也知道是正序还是倒序,应该就可以修改的.
@创业公司招技术人员.地点在沧州.薪资私聊: 我目前采取的方案是在GirdView上面拼接一个Table,与girdView的头一致,用控件onclick来触发排序事件,暂时解决了这个问题,若果利用GirdView本身排序只改变头文本就好了,明天再去试试
如果不是ajax,纯post方式,还有什么不可以改的?
一种方式你可以按照楼上说的,添加背景图片,在排序的时候图片切换。另外一种方式增加一个纯文本,切换的时候换一下字符。你试一下很简单。