I'm using an ajaxified RadGrid to display a long List<T> in a multi-tier environment. I've implemented a custom paging solution and I'm passing the SortExpressions[0] information to my next tier. This works fine for the first few sorts then I start to get an argument out range expression.
| <telerik:RadGrid ID="AccountListRadGrid" runat="server" |
| OnItemCreated="AccountListRadGrid_ItemCreated" |
| OnItemCommand="AccountListRadGrid_ItemCommand" |
| OnItemDataBound="AccountListRadGrid_NodeDataBound" |
| OnNeedDataSource="AccountListRadGrid_NeedDataSource" |
| OnDeleteCommand="AccountListRadGrid_DeleteButton_Click" |
| SkinID="ObjectList" |
| GridLines="None" |
| AutoGenerateColumns="False" |
| AllowPaging="False" |
| AllowMultiRowSelection="true" |
| AllowSorting="True"> |
| <MasterTableView |
| CommandItemDisplay="Bottom" |
| AllowPaging="false" |
| DataKeyNames="ObjectId"> |
| <NoRecordsTemplate> |
| <div>There are no accounts to display</div> |
| </NoRecordsTemplate> |
| <CommandItemTemplate /> |
| <RowIndicatorColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </RowIndicatorColumn> |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </ExpandCollapseColumn> |
| <Columns> |
| <telerik:GridTemplateColumn SortExpression="AccountName" HeaderText="          Account Name" UniqueName="AccountNameColumn"> |
| <ItemTemplate> |
|   |
| <asp:Image ID="TypeImg" ImageUrl="~/Images/50_ico.gif" runat="server" ImageAlign="AbsMiddle" /> |
|   |
| <asp:Hyperlink runat="server" ID="NameLink" /> |
| </ItemTemplate> |
| <HeaderStyle Width="30%" /> |
| </telerik:GridTemplateColumn> |
| <telerik:GridBoundColumn DataField="FriendlyName" SortExpression="FriendlyName" HeaderText="Friendly Name" UniqueName="FriendlyNameColumn"> |
| <HeaderStyle Width="30%" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="DateLastModified" SortExpression="DateLastModified" HeaderText="Date of Last Upload" UniqueName="LastModifiedColumn"> |
| <HeaderStyle Wrap="false" /> |
| <ItemStyle Wrap="false" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridNumericColumn DataField="ItemCount" HeaderText="Items" DataType="System.Int32" UniqueName="ItemCountColumn"> |
| <HeaderStyle Wrap="false" Width="55px" HorizontalAlign="Center" /> |
| <ItemStyle Wrap="false" HorizontalAlign="Center" /> |
| </telerik:GridNumericColumn> |
| <telerik:GridButtonColumn ImageUrl="~/images/delete.gif" HeaderText="All:" CommandName="Delete" ConfirmText="Deactivate this Account?" ConfirmTitle="Deactivate Account" ConfirmDialogType="RadWindow" UniqueName="DeleteAccountColumn" ButtonType="ImageButton"> |
| <HeaderStyle Wrap="false" HorizontalAlign="Right" Width="35px" /> |
| <ItemStyle HorizontalAlign="Center" /> |
| </telerik:GridButtonColumn> |
| <telerik:GridClientSelectColumn HeaderStyle-Width="20px" UniqueName="RevokeCheck"></telerik:GridClientSelectColumn> |
| <telerik:GridBoundColumn DataField="ObjectID" Display="False" UniqueName="IdColumn"></telerik:GridBoundColumn> |
| </Columns> |
| <SortExpressions> |
| <telerik:GridSortExpression FieldName="AccountName" SortOrder="Ascending" /> |
| </SortExpressions> |
| <CommandItemTemplate> |
| <div class="MoreRecordsContainer"> |
| <asp:HyperLink ID="MoreRecords" runat="server" Text="More..." CssClass="MoreRecords" /> |
| </div> |
| </CommandItemTemplate> |
| </MasterTableView> |
| <ClientSettings Selecting-AllowRowSelect="true"></ClientSettings> |
| </telerik:RadGrid> |
| public LPDataPageRequest DataPageRequest |
| { |
| get |
| { |
| RadGrid grid = AccountListRadGrid; |
| int currentPage = 0; |
| int pageSize = 15; |
| string property = string.Empty; |
| LPSortOrder sortOrder = LPSortOrder.Ascending; |
| if (grid.MasterTableView.SortExpressions != null && grid.MasterTableView.SortExpressions.Count > 0) |
| { |
| property = grid.MasterTableView.SortExpressions[0].FieldName; |
| sortOrder = grid.MasterTableView.SortExpressions[0].SortOrder == GridSortOrder.Ascending ? LPSortOrder.Ascending : LPSortOrder.Descending; |
| } |
| return new LPDataPageRequest(currentPage, pageSize, property, sortOrder); |
| } |
| } |