在代码隐藏的ASP.net中为GridView创建排序的代码?

时间:2009-04-01 08:33:06

标签: c# asp.net gridview sorting

这是我的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)
    {
        ?????????????????????????
    }

艾蒂安

2 个答案:

答案 0 :(得分: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" />

答案 1 :(得分:0)

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

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