Существует такой сетчатый вид, который имеет два столбца, которые необходимо отсортировать.разрешить сортировку на основе столбцов по gridview
Проблема заключается в том, что я получаю список классов для привязки данных к источнику данных gridview, при щелчке столбца сетки возникает выражение сортировки, но источник данных равен нулю, поэтому как я могу это достичь.
Markup:
<asp:GridView ID="grdDelegateList" runat="server" CssClass="gridviewBorder" AutoGenerateColumns="False" AllowSorting="true"
EmptyDataText="There are no delegates assigned for this bridge." CellPadding="2"
Style="margin-left: 0px" BackColor="White" Font-Names="Calibri" BorderWidth="1px"
Width="100%" AllowPaging="True" GridLines="Horizontal" RowHoverBackColor="#666666"
RowHoverForeColor="White" SelectedRowStyle-BackColor="#333333" SelectedRowStyle-ForeColor="White"
PageSize="20" OnPageIndexChanging="grdDelegateList_PageIndexChanging" OnRowCommand="grdDelegateList_RowCommand"
OnRowDataBound="grdDelegateList_RowDataBound"
OnRowDeleting="grdDelegateList_RowDeleting" onsorting="grdDelegateList_Sorting">
<Columns>
<asp:BoundField HeaderText="Employee ID" DataField="DelegateID" ItemStyle-HorizontalAlign="Center" SortExpression="DelegateID"
HeaderStyle-HorizontalAlign="Center" />
<asp:BoundField HeaderText="Display Name" DataField="FullName" ItemStyle-HorizontalAlign="Left" SortExpression="FullName"
HeaderStyle-HorizontalAlign="Left" />
<asp:TemplateField HeaderText="Remove" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left">
<ItemTemplate>
<span style="cursor: pointer">
<asp:LinkButton ID="ImgRemove" runat="server" CommandName="Delete" CommandArgument='<%# Eval("ID") %>'
Text="Remove" OnClientClick="return confirm('Are you sure you want to remove this Delegate');">
<img alt="Remove" src="Images/trash.png" style="border:0;" />
</asp:LinkButton></span>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Сортировать Экспрессия событие:
protected void grdDelegateList_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable table = grdDelegateList.DataSource as DataTable;//this is coming null
if (table != null)
{
DataView dataView = new DataView(table);
dataView.Sort = e.SortExpression + " " + ConvertSortDirection(e.SortDirection);
grdDelegateList.DataSource = dataView;
grdDelegateList.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;
}
Поскольку источник данных имеет нулевое значение, мне нужно, чтобы извлечь данные из БД снова, если да, то я выборка списка, поэтому мне нужно добавить логику cutom, чтобы сначала преобразовать список в таблицу данных или он будет работать со списком тоже. Какие-либо предложения??
В списке класса есть объект другого класса, который необходим для получения информации о том, что этот класс.so datatable не будет работать ... – ankur
Затем вам следует использовать листинг источника данных для списка вместо Datatable и выполнить сортировка по элементам списка. – vendettamit
Я внесла изменения в код, теперь он извлекает таблицу данных, но при сортировке выражения события griddatasource по-прежнему остается нулевым. – ankur