Код для создания сортировки для GridView в ASP.net в коде позади? - PullRequest
0 голосов
/ 01 апреля 2009

Это мой код для события 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)
    {
        ?????????????????????????
    }

Etienne

Ответы [ 2 ]

1 голос
/ 01 апреля 2009

Я обычно делаю это:

 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" />
0 голосов
/ 01 апреля 2009

Вы можете фильтровать и сортировать ваш набор данных, используя:

ds.Tables[0].Select(filterExp, sortExp, etc...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...