【问题标题】:Code to create Sorting for a GridView in ASP.net in Code Behind?在代码后面的 ASP.net 中为 GridView 创建排序的代码?
【发布时间】:2009-04-01 08:33:05
【问题描述】:

这是我的 Page_Load 事件代码

            OdbcConnection myConnection;
            DataSet dataSet = new DataSet();
            OdbcDataAdapter adapter;

            //making my connection
            myConnection = new OdbcConnection(ConfigurationManager.ConnectionStrings  ["ODBC_ConnectionString"].ConnectionString);

            adapter = new OdbcDataAdapter("SELECT * from Company", myConnection);

            adapter.Fill(dataSet, "MyData");

            GridView1.DataSource = dataSet;
            Session["DataSource"] = dataSet;
            GridView1.DataBind();

这是我的 PageIndexChanging 事件代码,一切正常。

           DataSet ds = new DataSet();

            if (Session["DataSource"] != null)
                ds = ((DataSet)Session["DataSource"]);

            GridView1.DataSource = ds;
            GridView1.PageIndex = e.NewPageIndex;
            this.GridView1.DataBind();

现在我需要什么代码来创建排序事件?

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        ?????????????????????????
    }

艾蒂安

【问题讨论】:

    标签: c# asp.net gridview sorting


    【解决方案1】:

    我通常这样做:

     public string SortField {
                get {
                    return (string) ViewState["_sortField"];
                }
                set {
                    ViewState["_sortField"] = value;
                }
            }
            public string SortDir {
                get {
                    return (string) ViewState["_sortDir"];
                }
                set {
                    ViewState["_sortDir"] = value;
                }
            }
    

    将用于数据绑定的代码放入另一个方法中,因为您必须在排序、分页和页面首次加载时调用它。例如,将其称为 DoDataBind()。然后你在 DoDataBind()

    DataTable dt = yourDataSet.Tables[0];
    dt.DefaultView.Sort = SortField + " " + SortDir;
    
    GridView1.DataSource = dt.DefaultView;
    GridView1.DataBind();
    

    那么你的活动看起来像这样:

    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) {
    
                if (e.SortExpression == SortField && SortDir != "desc") {
                    SortDir = "desc";
                }
                else {
                    SortDir = "asc";
                }
    
                SortField = e.SortExpression;
    
                DoDataBind();
            }
    

    然后在您的 aspx 页面中,您需要指定 SortExpression 是什么。例如这样的:

    <asp:BoundField DataField="FIRSTNAME" 
    HeaderText="First Name" SortExpression="FIRSTNAME" />
    

    【讨论】:

    • 感谢您的回复...不确定您所说的“将您的代码进行数据绑定到另一个方法中”的意思是什么代码?你给我的密码?
    • 数据绑定网格的代码。所以这个: OdbcConnection myConnection;数据集数据集 = 新数据集(); OdbcDataAdapter 适配器; ...snip... adapter.Fill(dataSet, "MyData"); //然后我提到的代码:DataTable dt = dataSet.Tables[0]; dt.DefaultView.Sort = SortField...等
    【解决方案2】:

    您可以使用以下方法过滤和排序数据集:

    ds.Tables[0].Select(filterExp, sortExp, etc...);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 2010-12-16
      相关资源
      最近更新 更多