GridView OnPageIndexChanging event does not fire

4.8k Views Asked by At

Everything seems to be fine with my GridView and code behind, but event does not fire.

Here is my Grid:

   <asp:UpdatePanel ID="ISOSearchUpdatePanel" runat="server">
  <ContentTemplate>           
   <div id="divIsoSelect" style="width:700px; height:60px; background-color:white">

    <fieldset>
        <legend style="font-size: larger; font-weight: bold">Search ISO by</legend>
    <table>
    <tr>
        <td><asp:DropDownList ID="ddlISOSearch" runat="server" AutoPostBack="true"  OnSelectedIndexChanged="ddlISOSearch_SelectedIndexChanged">
            <asp:ListItem Value="">Select...</asp:ListItem>
            <asp:ListItem Value="ISO Number" >ISO Number</asp:ListItem>
            <asp:ListItem Value="Name">Name</asp:ListItem>
            <asp:ListItem Value="Region" >Region</asp:ListItem>
            <asp:ListItem Value="Division">Division</asp:ListItem>

         </asp:DropDownList></td>
   <td >&nbsp;</td>
    <td>
        <asp:Panel ID="pnlSearchEntry" runat="server" Visible="false"   style="width:500px; border:gainsboro; border-width: thick;">
            <table>
            <tr>
                <td valign="middle" style="width:120px"><asp:Label ID="lblEntry"  runat="server" Text=""></asp:Label></td>

                <td valign="top"><asp:TextBox ID="txtSearchValue" runat="server">  </asp:TextBox></td>

                <td valign="top">&nbsp;&nbsp;<asp:Button ID="btnFind" runat="server" Text="Select" OnClick="btnFind_Click"/></td>
            </tr>
            </table>
        </asp:Panel>
    </td>
    </tr>
</table>               
</fieldset>
</div> 
               <asp:GridView ID="grvIsoSearchResults" runat="server" 
                AutoGenerateColumns="false" PageSize="15"
                AllowPaging = "true" Visible="false"  BorderColor="Red" GridLines="Both"
                OnRowCommand="grvIsoSearchResults_RowCommand"
                DataKeyNames="isonum" 
                OnPageIndexChanged="grvIsoSearchResults_PageIndexChanged"
                OnPageIndexChanging="grvIsoSearchResults_PageIndexChanging"
                OnSorting="grvIsoSearchResults_Sorting"                    
                style="position:absolute; top: 120px;">
                <PagerSettings firstpagetext="First" lastpagetext="Last" nextpagetext="Next" pagebuttoncount="100" />
                <Columns>
                   <asp:TemplateField HeaderText="ISONUM" SortExpression="isonum">
                        <ItemTemplate>
                            <asp:Label ID="txtgvIsoNum" Text = '<%# Eval("ISONUM")%>' runat="server" Width="70px" style="text-align:center" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="OFFICE NAME" SortExpression="isoofficename">
                        <ItemTemplate>
                            <asp:Label ID="txtgvIsoOfficeName" Text = '<%# Eval("ISOOFFICENAME")%>' runat="server" Width="200px" style="text-align:center" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="REGION" SortExpression="region">
                        <ItemTemplate>
                            <asp:Label ID="txtgvRegion" Text = '<%# Eval("REGION")%>' runat="server" Width="50px" style="text-align:center" />
                        </ItemTemplate>
                    </asp:TemplateField> 
                    <asp:TemplateField HeaderText="DIVISION" SortExpression="client_id">
                        <ItemTemplate>
                            <asp:Label ID="txtgvDivision" Text = '<%# Eval("CLIENT_ID")%>' runat="server" Width="50px" style="text-align:center" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="EMAIL ADDRESS">
                        <ItemTemplate>
                            <asp:TextBox ID="txtgvEmailAddress" Text = '<%# Eval("EMAIL")%>' runat="server" Width="200px" />
                            <asp:Button ID="btnEmailUpdate" Text = "Update" runat="server" CommandName="UpdateEmail" onClientClick="return ValidateEmail(this)" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <pagerstyle backcolor="#005482" ForeColor="White" height="30px" verticalalign="Bottom" horizontalalign="Center"/>
            </asp:GridView> 
    </ContentTemplate>
    </asp:UpdatePanel>

And this is my code-behind methods:

    private void SetViewState(DataSet myDataSet)
    {
       ViewState["Data"] = myDataSet;
    } 

    private DataSet GetViewState()
    {
        return (DataSet)ViewState["Data"];
    }

    private void LoadData(String selection, String userInput)
    {
        DataSet ds = new DataSet();
        .
        .
        .
        ds = ISOProcessing.GetISOData(selection, userInput);

        grvIsoSearchResults.DataSource = ds;
        if (ds.Tables[0].Rows.Count > 0)
        {
            SetViewState(ds);
            grvIsoSearchResults.DataBind();
            grvIsoSearchResults.Visible = true;

        }
        else
        {
            lblMsg.ForeColor = System.Drawing.Color.Red;
            this.lblMsg.Text = "No data for current selection";
        }
    }

    protected void grvIsoSearchResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
         grvIsoSearchResults.PageIndex = e.NewPageIndex;
         grvIsoSearchResults.DataSource = GetViewState();
         grvIsoSearchResults.DataBind();
    } 

Everything seems to be in place, but when I want to go to another page during debugging, break point is not even hit inside of my grvIsoSearchResults_PageIndexChanging() method. I'm not sure why that happens.

Need your help.

Thank you

2

There are 2 best solutions below

5
DatRid On BEST ANSWER

Try to add a trigger for it:

    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="grvIsoSearchResults" EventName="PageIndexChanging" />
    </Triggers>
</asp:UpdatePanel>
0
Aftab Ahmed On

the AutoPostback property of Gridview is not enable please it to true like this.

<asp:GridView ID="grvIsoSearchResults" AutoPostback="True" runat="server" 
            AutoGenerateColumns="false" PageSize="15"
            AllowPaging = "true" Visible="false"  BorderColor="Red" GridLines="Both"
            OnRowCommand="grvIsoSearchResults_RowCommand"
            DataKeyNames="isonum" 
            OnPageIndexChanged="grvIsoSearchResults_PageIndexChanged"
            OnPageIndexChanging="grvIsoSearchResults_PageIndexChanging"
            OnSorting="grvIsoSearchResults_Sorting"                    
            style="position:absolute; top: 120px;">
            <PagerSettings firstpagetext="First" lastpagetext="Last" nextpagetext="Next" pagebuttoncount="100" />
            <Columns>
               <asp:TemplateField HeaderText="ISONUM" SortExpression="isonum">
                    <ItemTemplate>
                        <asp:Label ID="txtgvIsoNum" Text = '<%# Eval("ISONUM")%>' runat="server" Width="70px" style="text-align:center" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="OFFICE NAME" SortExpression="isoofficename">
                    <ItemTemplate>
                        <asp:Label ID="txtgvIsoOfficeName" Text = '<%# Eval("ISOOFFICENAME")%>' runat="server" Width="200px" style="text-align:center" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="REGION" SortExpression="region">
                    <ItemTemplate>
                        <asp:Label ID="txtgvRegion" Text = '<%# Eval("REGION")%>' runat="server" Width="50px" style="text-align:center" />
                    </ItemTemplate>
                </asp:TemplateField> 
                <asp:TemplateField HeaderText="DIVISION" SortExpression="client_id">
                    <ItemTemplate>
                        <asp:Label ID="txtgvDivision" Text = '<%# Eval("CLIENT_ID")%>' runat="server" Width="50px" style="text-align:center" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="EMAIL ADDRESS">
                    <ItemTemplate>
                        <asp:TextBox ID="txtgvEmailAddress" Text = '<%# Eval("EMAIL")%>' runat="server" Width="200px" />
                        <asp:Button ID="btnEmailUpdate" Text = "Update" runat="server" CommandName="UpdateEmail" onClientClick="return ValidateEmail(this)" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <pagerstyle backcolor="#005482" ForeColor="White" height="30px" verticalalign="Bottom" horizontalalign="Center"/>
        </asp:GridView>