This is a migrated thread and some comments may be shown as answers.

RadGrid Sort applies only to current page

1 Answer 260 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Jon
Top achievements
Rank 1
Jon asked on 04 May 2011, 07:20 PM

I have a RadGrid that does sorting, but only for the current page. This particular grid has a year's worth of data divided into rows of 7 (52 pages * 7 = 365 days), but when I click on the first column (a date column named ReportDate) to sort the data, the sort is only applied against the current page's data! At first I thought maybe this was related to how date values are sometimes treated as strings, but that doesn't seem to be the case.

Here's a snippet of the grid's markup:


<telerik:RadGrid ID="RadGrid_StaffProductivitySummary" runat="server" AutoGenerateColumns="False"
    PageSize="7" Width="1185px" Height="500px" GridLines="None" 
    VirtualItemCount="365" Skin="Windows7" HorizontalAlign="Center" enablerowhoverstyle="true">
    <ItemStyle HorizontalAlign="Center" BorderWidth="0px"/>
    <MasterTableView horizontalalign="Center" gridlines="None" AllowPaging="True" AllowCustomPaging="true" PageSize="7" AllowSorting="true"
        commanditemdisplay="Top" >
        <SortExpressions>
            <telerik:GridSortExpression FieldName="ReportDateSort" SortOrder="Descending" />
        </SortExpressions>
        <CommandItemSettings ExportToPdfText="Export to Pdf" 
            ShowAddNewRecordButton="False"></CommandItemSettings>
        <Columns>
            <telerik:GridDateTimeColumn DataField="ReportDate" SortExpression="ReportDateSort"
                UniqueName="ReportDate" HeaderText="" PickerType="None" DataFormatString="{0:dd-MMM-yyyy}"
                HeaderStyle-Width="75px" HeaderStyle-Font-Bold="true">
            </telerik:GridDateTimeColumn>
            <telerik:GridTemplateColumn UniqueName="IncomingFaxesDaily" DataField="IncomingFaxesDaily"
                InitializeTemplatesFirst="false">
                <HeaderStyle Width="200px"/>
                <HeaderTemplate>
                    <table id="faxHeaderTable" cellspacing="1" cellpadding="3">
                        <tr>
                            <td colspan="4" align="center" style="background-color: #D8E6F1;"><b>Daily Fax Summary</b>
                            </td>
                        </tr>
                        <tr>
                            <td style="width: 25%;"><b>Incoming</b></td>
                            <td style="width: 25%;"><b>Processed</b></td>
                            <td style="width: 25%;"><b>Not Processed</b></td>
                            <td style="width: 25%;"><b>Deleted</b></td>
                        </tr>
                    </table>
                </HeaderTemplate>
                <ItemTemplate>
                    <table id="faxItemTable" cellspacing="1" cellpadding="1" width="100%" style="text-align:center;" border="0">
                        <tr>
                            <td style="width: 25%;"><%# DataBinder.Eval(Container.DataItem, "IncomingFaxesDaily") %></td>
                            <td style="width: 25%;"><%# DataBinder.Eval(Container.DataItem, "FaxesProcessedDaily") %></td>
                            <td style="width: 25%;"><%# DataBinder.Eval(Container.DataItem, "FaxesNotProcessedDaily") %></td>
                            <td style="width: 25%;"><%# DataBinder.Eval(Container.DataItem, "FaxesDeletedDaily") %></td>
                        </tr>
                    </table>
                </ItemTemplate>
            </telerik:GridTemplateColumn>          
        </Columns>
        <EditFormSettings>
            <EditColumn UniqueName="EditCommandColumn1">
            </EditColumn>
        </EditFormSettings>
        <ItemStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
            Font-Underline="False" HorizontalAlign="Center" Wrap="True" VerticalAlign="Middle" />
        <AlternatingItemStyle Font-Bold="False" Font-Italic="False" Font-Overline="False"
            Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" Wrap="True" />
        <EditItemStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
            Font-Underline="False" HorizontalAlign="Center" Wrap="True" />
        <PagerStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
            Font-Underline="False" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="True" />
        <HeaderStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
            Font-Underline="False" HorizontalAlign="Center" Wrap="True" VerticalAlign="Bottom" />
    </MasterTableView>
    <HeaderStyle BorderStyle="None" />
    <EditItemStyle BackColor="#FFFF99" Font-Bold="False" Font-Italic="False" 
        Font-Overline="False" Font-Strikeout="False" Font-Underline="False" 
        Wrap="True" />
</telerik:RadGrid>

I'm currently using the standard sorting (no overriding of the default sorting behavior by capturing the SortCommand event), though I've tried it both ways. The data source is populated in the NeedDataSource event handler and this is working fine (I even tried re-applying the Sort Expression here, but to no avail). Currently, I have modified the data source resultset to return the same date in two columns, ReportDate and ReportDateSort. I originally just used ReportDate for both the DataField and SortExpression values, but then thought maybe I needed a separate sorting column in case the format of the data (perhaps as a string) was causing problems, so I added ReportDateSort fort his purpose.

None of these different options have worked thus far. No matter which page I'm on within the data source, the sort only applies to that page.

Any help appreciated!

Thanks,

Jon

1 Answer, 1 is accepted

Sort by
0
Iana Tsolova
Telerik team
answered on 06 May 2011, 01:16 PM
Hello Jon,

The described behavior is rather expected with custom paging. In this case RadGrid does not know you have other items in the datasource and what are they. You can see how this issue is overcome in this demo.

Other than this, you can use some DataSource control to bind the grid which supports paging and sorting. For instance LinqDataSource, EntityDataSource or OpenAccessDataSource controls.

All the best,
Iana
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

Tags
Grid
Asked by
Jon
Top achievements
Rank 1
Answers by
Iana Tsolova
Telerik team
Share this question
or