понедельник, 17 ноября 2008 г.

SPGridView Сортировка

Сортировка можно в зависимости от задач разделить на два типа.
1. Если нужна сортировка по заданному столбцу по умолчанию, например,
то можно воспользоваться методом Sort

gvTovars.AllowSorting = true;
spgvUsers.Sort("Department", SortDirection.Ascending);

2. Если нужна функциональность сортировки по клику на заголовке столбца, тут придется сделать сложнее.
в CreateChildControls нужно определить DataView (например DataTable.DefaultView)

DataSource ds = __ВашМетодПолученияDataSource__;
DataView dv = ds.Tables[0].DefaultView;
SPGridView spgv = new SPGridView();
Разрешитьсортировку и добавить метод на событие сортировки:
spgv.AllowSorting = true;
spgv.Sorting += new GridViewSortEventHandler(spgv_Sorting);
spgv.DataSource = dv;
Метод
void spgv_Sorting(object sender, GridViewSortEventArgs e)
{
try
{
string lastExpression = "";
if (ViewState["SortExpression"] != null)
lastExpression = ViewState["SortExpression"].ToString();

string lastDirection = "asc";
if (ViewState["SortDirection"] != null)
lastDirection = ViewState["SortDirection"].ToString();

string newDirection = "asc";
if (e.SortExpression == lastExpression)
newDirection = (lastDirection == "asc") ? "desc" : "asc";

ViewState["SortExpression"] = e.SortExpression;
ViewState["SortDirection"] = newDirection;

dv.Sort = e.SortExpression + " " + newDirection;
spgv.DataBind();
}
catch (Exception Exc)
{
errMessage += Exc.Message;
}
}

Комментариев нет: