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

RadGrid e.OldSortOrder returns only None.

2 Answers 123 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Ravi
Top achievements
Rank 1
Ravi asked on 21 Sep 2011, 01:02 PM

I have a grid named gvTabList which in inside the usercontrol . I load this usercontrol at runtime from Default.aspx when some required condition is met.

The usercontrol is loaded as shown. I don't have to load this usercontrol on page load.As you can see I am not loading my usercontrol in Page_Load event.

if(Condition1 is met)
{
   UserControl control = (UserControl)LoadControl("~/Controls/" + Usercontrolname + ".ascx");
}
There is no problem loading the usercontrol when the condition is met. But the problem is when i click the heading of any column, the sortorder does not change. I have my funtion to handle the CustomSorting which is given below.

<telerik:RadAjaxManager ID="radAjaxManagerTab" runat="server">
                               <AjaxSettings>
                                   <telerik:AjaxSetting AjaxControlID="gvTabList">
                                       <UpdatedControls>
                                           <telerik:AjaxUpdatedControl ControlID="gvTabList" LoadingPanelID="ajaxLoadingPanel"  />
                                                                            
                                       </UpdatedControls>
                                   </telerik:AjaxSetting>
                               </AjaxSettings>
                           </telerik:RadAjaxManager>
                            <telerik:RadAjaxLoadingPanel ID="ajaxLoadingPanel" runat="server" IsSticky="true"
                       Skin="Default" Style="position: absolute; z-index: 101; top: 0; left: 0;">
                       <img alt="Loading" src="../Images/Loading.gif" />
                   </telerik:RadAjaxLoadingPanel>
                           <telerik:RadGrid ID="gvTabList" runat="server" Skin="WebBlue" AllowFilteringByColumn="True"
                               AllowPaging="True" PageSize="5" AllowSorting="True"
                                OnNeedDataSource="gvTabList_NeedDataSource"
                                OnInit="gvTabList_Init"
                                AutoGenerateColumns="False" GridLines="None" OnSortCommand="gvTabList_SortCommand" EnableAJAX="True" >                             
                               <GroupingSettings CaseSensitive="false" />
                               <MasterTableView AllowFilteringByColumn="true" AllowMultiColumnSorting="false" AllowCustomSorting="true">
                                   <RowIndicatorColumn Visible="False">
                                       <HeaderStyle Width="20px"></HeaderStyle>
                                   </RowIndicatorColumn>
                                   <ExpandCollapseColumn Visible="False">
                                       <HeaderStyle Width="19px"></HeaderStyle>
                                   </ExpandCollapseColumn>
                                   <CommandItemSettings ExportToPdfText="Export to Pdf" />
                                   <Columns>
                                       <telerik:GridBoundColumn AllowFiltering="False" DataField="ID" HeaderText="HEDIS #"
                                           UniqueName="HedisID">
                                           <HeaderStyle HorizontalAlign="Center" Width="140" />
                                           <ItemStyle HorizontalAlign="Center" />
                                       </telerik:GridBoundColumn>
                                       <telerik:GridBoundColumn AllowFiltering="False" DataField="HedisSubMeasure" HeaderText="HEDIS Domain"
                                           UniqueName="HedisDomain">
                                           <HeaderStyle HorizontalAlign="Center" Width="150" />
                                           <ItemStyle HorizontalAlign="Center" />
                                       </telerik:GridBoundColumn>
                                         
                                   </Columns>
                               </MasterTableView>
                                <PagerStyle Mode="NumericPages" />
                           </telerik:RadGrid>

I checked by debugging, but " e.OldSortOrder" always gives None.

protected void gvTabList_SortCommand(object source, GridSortCommandEventArgs e)
       {          
            GridSortExpression sortExpr = new GridSortExpression();          
           switch (e.OldSortOrder)           
           {
               case GridSortOrder.None:
                   sortExpr.FieldName = e.SortExpression;
                   sortExpr.SortOrder = GridSortOrder.Descending;
                   e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpr);                   
                   break;
               case GridSortOrder.Ascending:
                   sortExpr.FieldName = "ID";
                   sortExpr.SortOrder = GridSortOrder.Ascending;
                   e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpr);
                    
                   break;
               case GridSortOrder.Descending:
                   sortExpr.FieldName = e.SortExpression;
                   sortExpr.SortOrder = GridSortOrder.Ascending;
                   e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpr);
                   
                   break;
           }
           e.Canceled = true;    
           gvTabList.Rebind();
 
       }


Is this problem related with dynamically loading the usercontrol . I have found many forums saying " UserControl must be loaded during Init method". But as you can see I need this usercontrol only if a condition is met, I dont need it always. so I am not loading it in Init method.
if any one has faced this problem, please send me the solution. It will be a great help.






2 Answers, 1 is accepted

Sort by
0
Don Cote
Top achievements
Rank 1
answered on 13 Mar 2012, 06:45 PM
I'm experiencing this same problem.  OldSortOrder is always none.

Would love to see a reply.

Thanks.
0
Antonio Stoilkov
Telerik team
answered on 19 Mar 2012, 09:19 AM
Hi,

The experienced behavior is caused because of the dynamic loading of the user control. The ViewState data is lost and could not be retrieved so the sort order could not be preserved. In order to resolve your issue you could move your condition in Page_Load. If this is not possible you could load all controls on page init or load and set their Visible property in the condition which will handle the HTML output of the page and achieve the desired functionality.

Kind regards,
Antonio Stoilkov
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
Tags
Grid
Asked by
Ravi
Top achievements
Rank 1
Answers by
Don Cote
Top achievements
Rank 1
Antonio Stoilkov
Telerik team
Share this question
or