public string SortExpressionEx
 {
 get
 {
 if (ViewState["SortExpressionEx"] == null)
 {
 return null;
 }
 return ViewState["SortExpressionEx"].ToString();
 }
 set
 {
 ViewState["SortExpressionEx"] = value;
 }
 }
然后重写OnSorting事件如下:
 protected override void OnSorting(GridViewSortEventArgs e)
 {
 SortExpressionEx = e.SortExpression;
 SortExpressionStr = e.SortExpression + " " + SortDirectionStr;
 OnBind();
 if (SortDirectionStr.ToLower() == "asc")
 {
 SortDirectionStr = "DESC";
 }
 else
 {
 SortDirectionStr = "ASC";
 }
 }
并且增加如下的OnLoad事件
 protected override void OnLoad(EventArgs e)
 {
 if (!Page.IsPostBack)
 {
 try
 {
 OnBind();
 }
 catch
 {
 }
 }
 base.OnLoad(e);
 }
经过上面这样简单的改造,您再次使用GridViewEx的时候,在前台页面使用的时候,您只要按照这样的格式就可以了:
 
 <%#Eval(''ID")%> 
 
 后台只需要添加这样的方法
public void BindData()
{
 DataSet ds = new DataSet();
 ds = //获得DataSet;
 gridView1.DataSetSource = ds;
}
 在页面中的Page_Load方法中,也不用再写
if(!Page.IsPostBack)
{
 BindData();//绑定GridView的方法
}
注意,如果需要重新绑定GridView,只需要这样GridViewEx1.OnBind();即可。
来源:jillzhang的blogs