Двунаправленная сортировка в gridview - PullRequest
0 голосов
/ 25 июля 2011

Как я могу реализовать двунаправленную сортировку в GridView с условием, что мой GridView связан не с SQL, а с набором строк-столбцов и набором данных.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 мая 2016

В вашем методе привязки данных вы будете инициализировать состояния просмотра, а затем в вашем событии сортировки вы будете делать следующее следующим образом.

void gvReport_Sorting(object sender, GridViewSortEventArgs e)
{        
    System.Data.DataTable dataTable = ViewState["dataTable"] as System.Data.DataTable;
    string sortDirection = (ViewState["sortDirection"].ToString() == "ASC" ? "DESC" : "ASC");
    ViewState["sortDirection"] = sortDirection;

    if (dataTable != null)
    {
        System.Data.DataView dataView = new System.Data.DataView(dataTable);
        dataView.Sort = String.Format("{0} {1}", e.SortExpression, sortDirection);

        gvReport.DataSource = dataView;
        gvReport.DataBind();
    }
}
0 голосов
/ 25 июля 2011

Поместите свой Datatable в Viewstate, когда вы впервые связываете его.

gridView1.DataBind();
ViewState["dtbl"] = YourDataTable

Вот код, который позволяет вам сделать это ...

protected void ComponentGridView_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dataTable = ViewState["dtbl"] as DataTable;

if (dataTable != null)
{
    DataView dataView = new DataView(dataTable);
    dataView.Sort = e.SortExpression + " " + ConvertSortDirection(e.SortDirection);

    ComponentGridView.DataSource = dataView;
    ComponentGridView.DataBind();
}
}

private string ConvertSortDirection(SortDirection sortDirection)
{
string newSortDirection = String.Empty;

switch (sortDirection)
{
    case SortDirection.Ascending:
        newSortDirection = "ASC";
        break;

    case SortDirection.Descending:
        newSortDirection = "DESC";
        break;
}

return newSortDirection;
}

Подробнее см. В этой статье MSDN GridView.Sorting

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...