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

Events order problem

2 Answers 88 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Moisoiu Andrei
Top achievements
Rank 1
Moisoiu Andrei asked on 23 Feb 2011, 09:36 AM
Hi,

I have an event order problem on my radgrid. The problem is that the OnPageIndexChanged is raised after OnNeedDataSource and the pager index is the old one. (if I press the '2' button from the pagger the value of the ResultRadGrid.CurrentPageIndex is 0 and when I press the '1' button againd the ResultRadGrid.CurrentPageIndex is 1). I need to call the OnPageIndexChanged  before OnNeedDataSource  for changing the page index value to new page index value. 

My code:
<%@ Page Title="" Language="C#" MasterPageFile="~/Page/ResumeAdvisor/MasterPage/ResumeAdvisor.master" ValidateRequest="false"
    AutoEventWireup="true" CodeBehind="MyApplicants.aspx.cs" Inherits="w000250.FrontOffice.Page.ResumeAdvisor.Workflow.MyApplicants"
    Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %>
 
<%@ Register Src="../UserControl/SearchPanel.ascx" TagName="SearchPanel" TagPrefix="uc1" %>
<%@ Register Src="../UserControl/MemorizeSearch.ascx" TagName="MemorizeSearchPanel" TagPrefix="uc" %>
<%@ Register Src="../UserControl/CandidateView.ascx" TagName="CandidateView" TagPrefix="uc2" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContentPlaceHolder" runat="server">
 
        <script language="javascript" type="text/javascript">
            //<![CDATA[
            function grant_approval(arg) {
                if (arg == true) {
                    $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("GiveLabel");
                }
            }
 
            function withdraw_approval(arg) {
                if (arg == true) {
                    $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("RemoveLabel");
                }
            }
 
            function removes_approval(arg) {
                if (arg == true) {
                    $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("RemoveFromCandidates");
                }
            }
             
            //]]>
        </script>
</asp:Content>
 <telerik:RadGrid ID="ResultRadGrid" runat="server" AutoGenerateColumns="False" AllowMultiRowSelection="True"
            AllowPaging="true" AllowSorting="True" OnPageIndexChanged="ResultRadGrid_PageIndexChanged"
            PagerStyle-Mode="NextPrevAndNumeric" PagerStyle-Position="TopAndBottom" PageSize="5"
            OnNeedDataSource="ResultRadGrid_OnNeedDataSource" OnItemCommand="ResultRadGrid_OnItemCommand"
            AllowCustomPaging="true" VirtualItemCount="10000" PagerStyle-EnableSEOPaging="false"
            GridLines="Vertical" PagerStyle-SEOPagingQueryStringKey="page" OnItemCreated="ResultRadGrid_OnItemCreated">
            <ItemStyle />
            <AlternatingItemStyle />
            <MasterTableView CellSpacing="-1" CommandItemDisplay="Bottom">
                <PagerStyle Mode="NumericPages" Position="TopAndBottom" AlwaysVisible="true" />
                <%-- Pager - Modifier le panel numeric --%>
                <PagerTemplate>
                    <div class="pager">
                        <span class="pagerPrev">
                            <asp:Button ID="ButtonFirst" runat="server" OnClientClick="changePage('first'); return false;"
                                CommandName="Page" CommandArgument="First" Text="" CssClass="PagerButton FirstPage" />
                            <asp:Button ID="ButtonPrev" runat="server" OnClientClick="changePage('prev'); return false;"
                                CommandName="Page" CommandArgument="Prev" Text="" CssClass="PagerButton PrevPage" />
                        </span>
                        <asp:Panel runat="server" ID="NumericPagerPlaceHolder" CssClass="pagerNumber" />
                        <span class="pagerNext">
                            <asp:Button ID="ButtonNext" runat="server" OnClientClick="changePage('next'); return false;"
                                CommandName="Page" CommandArgument="Next" Text="" CssClass="PagerButton NextPage" />
                            <asp:Button ID="ButtonLast" runat="server" OnClientClick="changePage('last'); return false;"
                                CommandName="Page" CommandArgument="Last" Text="" CssClass="PagerButton LastPage" />
                        </span>
                    </div>
                </PagerTemplate>
                <CommandItemTemplate>
                    <asp:Button ID="NoTrackingButton" runat="server" CssClass="buttonLong" OnClick="NoTrackingButton_Click"
                        Text="Ne souhaite pas être suivi" meta:resourcekey="NoTrackingButtonResource1" />
                    <asp:Button ID="RemoveFromCandidatesButton" runat="server" CssClass="buttonLong"
                        Text='Supprimer de "Mes candidats"' meta:resourcekey="RemoveFromCandidatesButtonResource1"
                        Visible="true" Enabled="true" />
                    <asp:Button ID="LabelizeCandidatesButton" runat="server" CssClass="buttonBig" Text="Accorder le label"
                        meta:resourcekey="LabelizeCandidatesButtonResource1" Visible="true" Enabled="true" />
                    <asp:Button ID="UnLabelizeCandidatesButton" runat="server" CssClass="buttonBig" Text="Retirer le label"
                        meta:resourcekey="UnLabelizeCandidatesButtonResource1" Visible="true" Enabled="true" />
                    <asp:Button ID="ContactButton" runat="server" OnClick="ContactButton_Click" CssClass="buttonBig"
                        Text="Contacter" meta:resourcekey="ContactButtonResource1" Visible="true" Enabled="true" />
                </CommandItemTemplate>
                <NoRecordsTemplate>
                    <asp:Label ID="NoResultLabel" runat="server" Text="Aucun résultat ne correspond  à votre recherche"></asp:Label></NoRecordsTemplate>
                <RowIndicatorColumn>
                    <HeaderStyle Width="20px" />
                </RowIndicatorColumn>
                <ExpandCollapseColumn>
                    <HeaderStyle Width="20px" />
                </ExpandCollapseColumn>
                <Columns>
                    <telerik:GridTemplateColumn UniqueName="DataItemTemplateColumn">
                        <ItemStyle CssClass="dataItem" />
                        <ItemTemplate>
                            <uc2:CandidateView ID="CandidateViewUC" runat="server" DataSource="<%# Container.DataItem %>"
                                EnableProfileLink="true" EnableContactLink="true" IsMyApplicantPage="true" EnableAddToCandidateLink="false"
                                EnableSeeCompleteFolder="true" EnableRemoveFromCandidatesLink="true" EnableAddOrRemoveLabelLink="true"
                                ParentUrl="~/Page/ResumeAdvisor/Workflow/MyApplicants.aspx" />
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                    <telerik:GridTemplateColumn UniqueName="CheckBoxTemplateColumn">
                        <ItemStyle CssClass="clientSelect" HorizontalAlign="Center" VerticalAlign="Middle"
                            Width="30px" />
                        <HeaderStyle CssClass="clientSelect" Height="30" Width="30px" HorizontalAlign="Center" />
                        <HeaderTemplate>
                            <asp:CheckBox ID="headerChkbox" runat="server" OnCheckedChanged="ToggleSelectedState"
                                AutoPostBack="True" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <div class="clientSelectContent">
                                <asp:CheckBox ID="selecteditem" runat="server" OnCheckedChanged="ToggleRowSelection"
                                    AutoPostBack="true" />
                            </div>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                </Columns>
            </MasterTableView>
        </telerik:RadGrid>
 <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" DefaultLoadingPanelID="RadAjaxLoadingPanel1"
        OnAjaxRequest="RadAjaxManager1_AjaxRequest" AsyncPostBackTimeOut="600000">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="ResultRadGrid" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="ResultRadGrid">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="ResultRadGrid" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Default">
    </telerik:RadAjaxLoadingPanel>


my C# code
protected void ResultRadGrid_OnItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
        {
            if (e.Item is GridPagerItem)
            {
                GridPagerItem gridPager = e.Item as GridPagerItem;
                Control numericPagerControl = gridPager.GetNumericPager();
                Control placeHolder = gridPager.FindControl("NumericPagerPlaceHolder");
                placeHolder.Controls.Add(numericPagerControl);
            }
        }
 
private List<AbgService.Resume> SearchResume()
        {
            List<AbgService.Resume> resumes = Business.ResumeAdvisor.ResumeAdvisorManagement.FindMyApplicants(MyResumeSearchPanel.ParamSpecialisationId, MyResumeSearchPanel.ParamExperienceLevelId,
                        MyResumeSearchPanel.ParamQuickSearch, MyResumeSearchPanel.ParamFilterResumeWithLabel, MyResumeSearchPanel.paramEmail,
                        MyResumeSearchPanel.paramState == ResumeStateEnum.Suspended || MyResumeSearchPanel.paramState == null,
                        MyResumeSearchPanel.paramState == ResumeStateEnum.Published || MyResumeSearchPanel.paramState == null,
                        MyResumeSearchPanel.paramState == ResumeStateEnum.Preparation || MyResumeSearchPanel.paramState == null,
                        MyResumeSearchPanel.paramPromotion, MyResumeSearchPanel.paramDoctorateSchool, MyResumeSearchPanel.paramDiplomaInstitution,
                        MyResumeSearchPanel.paramCurrentSituation, MyResumeSearchPanel.ParamSite, MyResumeSearchPanel.ParamResumesPerPage, ResultRadGrid.CurrentPageIndex);
            if (resumes != null)
            {
                resumes.Sort(ResumeComparer.GetResumeComparer(MyResumeSearchPanel.ParamSortBy));
 
                int itemsNumber =Business.ResumeAdvisor.ResumeAdvisorManagement.FindMyApplicantsCount(MyResumeSearchPanel.ParamSpecialisationId, MyResumeSearchPanel.ParamExperienceLevelId,
                          MyResumeSearchPanel.ParamQuickSearch, MyResumeSearchPanel.ParamFilterResumeWithLabel, MyResumeSearchPanel.paramEmail,
                          MyResumeSearchPanel.paramState == ResumeStateEnum.Suspended || MyResumeSearchPanel.paramState == null,
                          MyResumeSearchPanel.paramState == ResumeStateEnum.Published || MyResumeSearchPanel.paramState == null,
                          MyResumeSearchPanel.paramState == ResumeStateEnum.Preparation || MyResumeSearchPanel.paramState == null,
                          MyResumeSearchPanel.paramPromotion, MyResumeSearchPanel.paramDoctorateSchool, MyResumeSearchPanel.paramDiplomaInstitution,
                          MyResumeSearchPanel.paramCurrentSituation, MyResumeSearchPanel.ParamSite, MyResumeSearchPanel.ParamResumesPerPage, ResultRadGrid.CurrentPageIndex);
                ResultRadGrid.MasterTableView.VirtualItemCount = itemsNumber;
                ResumeNumberValue.Text = itemsNumber.ToString();
           
                if (resumes.Count == 0)
                {
                    DisplayGridResults.Visible = false;
                }
                else
                {
                    DisplayGridResults.Visible = true;
                }
            }
            return resumes;
        }
 
protected void ResultRadGrid_OnNeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
        {
            List<AbgService.Resume> resumeArrayToDisplay = this.SearchResume();
            ResultRadGrid.DataSource = resumeArrayToDisplay;
             
        }
 
        protected void ResultRadGrid_PageIndexChanged(object source, Telerik.Web.UI.GridPageChangedEventArgs e)
        {
            //a
        }


Thanks.

2 Answers, 1 is accepted

Sort by
0
Moisoiu Andrei
Top achievements
Rank 1
answered on 23 Feb 2011, 10:36 AM
Or maybe can someone help me to find the modified (after click) ResultRadGrid.CurrentPageIndex on OnNeedDataSource.
0
Accepted
Tsvetina
Telerik team
answered on 28 Feb 2011, 08:48 AM
Hi,

Unless you have disabled the ViewState of your page, the NeedDataSource should be firing after PageIndexChanged. If ViewState is indeed disabled, then NeedDataSource will be firing twice, before and after PageIndexChanged. you can view this help article for more information on RadGrid's event sequence:
Event sequence

Greetings,
Tsvetina
the Telerik team
Registration for Q1 2011 What’s New Webinar Week is now open. Mark your calendar for the week starting March 21st and book your seat for a walk through all the exciting stuff we ship with the new release!
Tags
Grid
Asked by
Moisoiu Andrei
Top achievements
Rank 1
Answers by
Moisoiu Andrei
Top achievements
Rank 1
Tsvetina
Telerik team
Share this question
or