Но это только потенциальная возможность
Но это только потенциальная возможность сортировки, так как сам элемент сортировать не может, это должен обеспечить программист. При AllowSorting = True в заголовке выводятся гиперссылки, при нажатии на которые вызывается событие SortCommand. Так как нет автогенерации, в описание BoundColumn нужно вставить SortExpression:
<asp:BoundColumn DataField="name" FooterText="Name" HeaderText="Фамилия" SortExpression="name"> </asp:BoundColumn>
Метод-обработчик события SortCommand принимает параметр типа DataGridSortCommandEventArgs, в свойстве SortExpression которого содержится строка — выражение сортировки SortExpression. Необходимо использовать это выражение для сортировки данных, полученных из источника данных
protected void DataGrid2_SortCommand(object source, DataGridSortCommandEventArgs e) { ViewState["sort"] = e.SortExpression; bindData(); }
где bindData() вынесен в отдельную функцию и вызывается также из Page_Load:
private void bindData() { String xmlFilename = Server.MapPath("") + "\\nobel.xml"; DataSet newDataSet = new DataSet(); newDataSet.ReadXml(xmlFilename); if (ViewState["sort"] != null) newDataSet.Tables[3].DefaultView.Sort = (string)ViewState["sort"]; DataTable newDataTable = newDataSet.Tables[3]; DataGrid2.DataSource = newDataTable; DataGrid2.DataBind(); }
void Page_Load() { if (!IsPostBack) bindData(); }
ФамилияСтранаГодПроизведение
Romain Rollan | France | 1915 | "Jean-Cristophe" |
George Bernard Shaw | Great Britain | 1925 | |
Boris Pasternak | Russia | 1958 | "Doctor Zhivago" |
Gabriel Garsia Marquez | Columbia | 1982 | "100 years of solitude" |
NameCountryYear wonWork
Содержание Назад Вперед