У меня есть RadGrid, который инициализируется в разметке:
<telerik:RadGrid runat="server" ID="GridViewSelector" SkinID="GridViewSelectorSkin" AllowPaging="True" PageSize="12" AllowSorting="True" EnableViewState="true"
AllowCustomPaging="true" AllowFilteringByColumn="true" DataKeyNames="ID" AutoGenerateColumns="False" ShowFooter="false" style="float:left;"
AllowMultiRowEdit="false" OnNeedDataSource="GridViewSelector_NeedDataSource"
OnItemCommand="GridViewSelector_ItemCommand" EnableEmbeddedSkins="false" OnItemCreated="GridViewSelector_ItemCreated"
OnSortCommand="GridViewSelector_SortCommand"
OnItemDataBound="GridViewSelector_ItemDataBound"
OnPreRender="GridViewSelector_PreRender" OnSelectedIndexChanged ="GridViewSelector_SelectedIndexChanged">
<PagerStyle Visible="false" />
<ClientSettings EnableRowHoverStyle="true">
<Selecting AllowRowSelect="false" />
</ClientSettings>
<MasterTableView runat="server" AllowMultiColumnSorting="false" AllowNaturalSort="false" DataKeyNames="ID">
<SortExpressions>
<telerik:GridSortExpression FieldName="ExpenseDate" SortOrder="Ascending" />
</SortExpressions>
<Columns>
<telerik:GridButtonColumn ButtonType="ImageButton" ImageUrl="~/Images/ListingDown.png" CommandName="Select">
<HeaderStyle HorizontalAlign="Center" Width="50px" />
<ItemStyle HorizontalAlign="Center" Width="50px" />
</telerik:GridButtonColumn>
<telerik:GridBoundColumn HeaderText="Date" UniqueName="ExpenseDate" DataField="ExpenseDate" SortExpression="ExpenseDate" HtmlEncode="false">
<HeaderStyle HorizontalAlign="Center" Width="100px" />
<ItemStyle HorizontalAlign="Center" Width="100px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Type" UniqueName="ExpenseType" DataField="Type" SortExpression="Type" HtmlEncode="false">
<HeaderStyle HorizontalAlign="Center" Width="100px" />
<ItemStyle HorizontalAlign="Center" Width="100px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Description" UniqueName="ExpenseDescription" DataField="Description" SortExpression="Description">
<HeaderStyle HorizontalAlign="Center" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Gross" UniqueName="Gross" DataField="Gross" SortExpression="Gross" HtmlEncode="false">
<HeaderStyle HorizontalAlign="Center" Width="100px" />
<ItemStyle HorizontalAlign="Center" Width="100px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="" UniqueName="" DataField="" SortExpression="" HtmlEncode="">
<HeaderStyle HorizontalAlign="Center" Width="100px" />
<ItemStyle HorizontalAlign="Center" Width="100px" />
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
Когда пользователь нажимает на вкладку, я переформатирую тот же элемент управления RadGrid в файле .aspx.cs.Вот пример:
cols[1].HeaderText = "Claim No.";
cols[1].DataType = typeof(System.Int64);
((GridBoundColumn)cols[1]).DataField = "ClaimNumber";
cols[2].HeaderText = "Claimant";
cols[2].DataType = typeof(System.String);
((GridBoundColumn)cols[2]).DataField = "Claimant";
cols[3].HeaderText = "Date";
cols[3].DataType = typeof(System.DateTime);
((GridBoundColumn)cols[3]).DataField = "ExpenseDate";
((GridBoundColumn)cols[3]).DataFormatString = "{0:" + HttpHelper.User.PreferredDateFormat + "}";
cols[4].HeaderText = "Description";
cols[4].DataType = typeof(System.String);
((GridBoundColumn)cols[4]).DataField = "ClaimNumber";
cols[5].HeaderText = "Amount";
cols[5].DataType = typeof(System.Decimal);
((GridBoundColumn)cols[5]).DataField = "Amount";
((GridBoundColumn)cols[5]).HeaderStyle.Width = 100;
((GridBoundColumn)cols[5]).ItemStyle.Width = 100;
Это почти идеально работает, за исключением одной проблемы.Столбец, к которому применена сортировка, не заполняется данными.В частности, сверху не работает следующее:
((GridBoundColumn)cols[1]).DataField = "ClaimNumber";
Ранее оно заполнялось датой (дд / мм / гггг), к которой применено выражение сортировки.Все остальные поля (которые ранее не имели выражений сортировки) возвращаются и отображают правильные данные.
Кто-нибудь еще сталкивался с этим?