用session记住排序表达式
在SortCommand事件中Session["sortExpression"] = e.SortExpression;
PageIndexChanged事件里重新排序:DG_sheetlist.CurrentPageIndex = e.NewPageIndex;
// Rebind the data. 
DG_sheetlist.DataSource = dv;
if (Session["sortExpression"] != null)
{
dv.Sort = Session["sortExpression"].ToString ();
}
DG_sheetlist.DataBind();

解决方案 »

  1.   

    用viewstate来保存排序的一些状态
      

  2.   

    排序的:
      #region 排序
    /// <summary>
    /// 排序
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    private void functionGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
    {
    //回到第一页
    functionGrid.CurrentPageIndex = 0;
    //取得选择列的值
    String strField = ViewState["strField"].ToString();
    //取得排序方向
    String stroldDirect = ViewState["Direct"].ToString();
    //创建变量,获取排序值
    String strCurrDirect = "";
    //判断当前点击列是否是上次点击列
    if (e.SortExpression.Equals(strField)) 
    {
    //排序方向如为空,排序值为“DESC”,否则为“""”
    strCurrDirect = stroldDirect.Equals("") ? " DESC " : "";
    }
    //存储当前点击列的值
    strField = e.SortExpression;
    ViewState.Add("strField",strField);
    //存储排序方向
    ViewState.Add("Direct",strCurrDirect);
    //重新帮定数据
    setDataView();
    }
    #endregion
      

  3.   

    #region 翻页
    /// <summary>
    /// 翻页
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    private void functionGrid_PageIndexChanged_1(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    //设置数据帮定表的当前页
    functionGrid.CurrentPageIndex = e.NewPageIndex;
    //重新帮定数据
    setDataView();
    }
    #endregion        #region 排序
    /// <summary>
    /// 排序
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    private void functionGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
    {
    //回到第一页
    functionGrid.CurrentPageIndex = 0;
    //取得选择列的值
    String strField = ViewState["strField"].ToString();
    //取得排序方向
    String stroldDirect = ViewState["Direct"].ToString();
    //创建变量,获取排序值
    String strCurrDirect = "";
    //判断当前点击列是否是上次点击列
    if (e.SortExpression.Equals(strField)) 
    {
    //排序方向如为空,排序值为“DESC”,否则为“""”
    strCurrDirect = stroldDirect.Equals("") ? " DESC " : "";
    }
    //存储当前点击列的值
    strField = e.SortExpression;
    ViewState.Add("strField",strField);
    //存储排序方向
    ViewState.Add("Direct",strCurrDirect);
    //重新帮定数据
    setDataView();
    }
    #endregion
      

  4.   

    #region 页数跳转按钮
    /// <summary>
    /// 页数跳转按钮
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void btnGo_Click(object sender, System.EventArgs e)
    {
    //声明临时变量
    String temp = "";
    //声明临时 可变字符字符串 变量
    System.Text.StringBuilder messBuilder = new System.Text.StringBuilder();
    if(txtBoxPage.Text == "")
    {
    //空值处理
    this.Page.RegisterStartupScript("",@"<script>alert('"+promng.common.MessageLog.getMessage("M0002","跳转页面")+"')</script>");
    return;
    }
    else
    {
    //正整数校验
    messBuilder.Append(requiremanage.checkProInt(txtBoxPage.Text,"页码"));
    }
    temp = messBuilder.ToString();
    if(temp != "")
    {
    //输入数据未通过校验,提示相应信息
    this.Page.RegisterStartupScript("",@"<script>alert('"+temp+"')</script>");
    //清空输入框
    this.txtBoxPage.Text = "";
    return;
    }
    //转换类型
    int intPage = int.Parse(txtBoxPage.Text);
    //输入值范围判断
    if(intPage > functionGrid.PageCount)
    {
    //显示提示信息
    this.Page.RegisterStartupScript("",@"<script>alert('"+promng.common.MessageLog.getMessage("M0033")+"')</script>");
    //清空输入框
    this.txtBoxPage.Text = "";
    return;
    }
    else
    {
    //设置当前页
    functionGrid.CurrentPageIndex = intPage - 1;
    }
    setDataView();
    //清空输入框
    this.txtBoxPage.Text = "";
    }
    #endregion