GridView自定义模板列排序问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 19:22:36
我在做一个Gridview的用户控件,上面的所有的列都是用自定义的模板列生成的,我需要添加一个功能,当用户单击gridview的表头时会有一个排序的效果,gridview有一个属性可以实现表头排序的,AllowSorting=true,但现在我设置了这个属性,却没有效果,不知道是否因为所有的列都是我手动创建的原因,请高手帮我分析下
我的代码如下:
/// <summary>
/// 自定义模板列:Lable
/// </summary>
public class GridViewTemplateLable : ITemplate
{
#region ITemplate 成员

private DataControlRowType _templatetype;
private string _columnname;
private int _rowid;
private int _wordcount;
private bool _fol;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="templatetype">类型</param>
/// <param name="columnname">内容</param>
/// <param name="rowid">行号</param>
/// <param name="wordcount"&g

AllowSorting只是一个属性而以,它所标识的是你是否允许排序,但允许并不表示会给你排,具体的算法还要自己实现相应的排序事件。
因为dataset不支持排序,所以将dataset绑定到GridView上以后不能使用GridView的 排序功能,要排序需要手动实现GridView的Sorting事件,通过DataView的排序功能来对GridView进行排序,下面是一个例子

//********************************************************************************
//处理GridView的排序事件
protected void grv_Messenge_Sorting(object sender, GridViewSortEventArgs e)
...{
string sortExpression = e.SortExpression;
if (GridViewSortDirection == SortDirection.Ascending) //设置排序方向
...{
GridViewSortDirection = SortDirection.Descending;
SortGridView(sortExpression, " DESC");
}
else
...{
GridViewSortDirection = SortDirection.Ascending;
SortGridView(sortExpression, " ASC");
}
}

//**************************************************