Solved

Allow paging of a GridView does not move to the record on the next page.

Posted on 2009-07-08
3
406 Views
Last Modified: 2013-12-17
This is my Gridview:
      <asp:GridView ID="GrdVwBuyUpContributions" runat="server" AutoGenerateColumns="False"
                                                           
            OnRowEditing="GrdVwBuyUpContributions_Click" OnRowUpdating="GrdVwBuyUpContributions_update" OnRowCancelingEdit="GrdVwBuyUpContributions_RowCancelingEdit" OnPageIndexChanging="GrdVwBuyUpContributions_PageIndexChanging"
            BackColor="White" BorderColor="#E7E7FF"
            BorderStyle="None" BorderWidth="1px" GridLines="Horizontal" HorizontalAlign="Left" DataKeyNames="Contribution_ID"
            Width="300" AllowPaging="True" PageSize="10" >
            <Columns>
                <asp:CommandField ShowEditButton="True"></asp:CommandField>
                <asp:TemplateField HeaderText="Contribution Date" HeaderStyle-HorizontalAlign="Left">
                    <ItemTemplate>
                        <%# Eval("Date") %>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="DateTextBox" Text='<%# Eval("Date")%>' runat="server"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="You must enter a valid date."
                            ControlToValidate="DateTextBox">
                            *</asp:RequiredFieldValidator>
                        <asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="You must provide a valid Date.."
                            ControlToValidate="DateTextBox" Operator="DataTypeCheck" Type="Date">
                            *</asp:CompareValidator>
                        <cc1:CalendarExtender ID="CalendarExtender1" TargetControlID="DateTextBox" Format="yyyy/MM/dd"
                            runat="server">
                        </cc1:CalendarExtender>
                     
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Amount" HeaderStyle-HorizontalAlign="Left">
                    <ItemTemplate>
                       <%# string.Format("{0:c}", Eval("Amount"))%>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="AmountTextBox" Text='<%# string.Format("{0:0.00}", Eval("Amount"))%>' runat="server"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator2"  runat="server" ErrorMessage="You must enter an amount."
                            ControlToValidate="AmountTextBox">
                            *</asp:RequiredFieldValidator>
                        <asp:CompareValidator ID="CompareValidator2" runat="server" ErrorMessage="You must provide a valid currency value for the Amount."
                            ControlToValidate="AmountTextBox" Operator="DataTypeCheck" Type="Currency">
                            *</asp:CompareValidator>
                    </EditItemTemplate>
                </asp:TemplateField>
            </Columns>
            <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
            <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
            <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
            <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
            <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
            <AlternatingRowStyle BackColor="#F7F7F7" />
        </asp:GridView>

This is the code when pageIndex changes:

 protected void GrdVwBuyUpContributions_PageIndexChanging(Object sender, GridViewPageEventArgs e)
     {

       // Cancel the paging operation if the user attempts to navigate
       // to another page while the GridView control is in edit mode.
       if (GrdVwBuyUpContributions.EditIndex != -1)
       {
         // Use the Cancel property to cancel the paging operation.
         e.Cancel = true;

         // Display an error message.
         int newPageNumber = e.NewPageIndex + 1;
         lblMessage.Text = "Please update the record before moving to page " +
           newPageNumber.ToString() + ".";
       }
       else
       {
         // Clear the error message.
         lblMessage.Text = "";
         
       }

However when I click on any of the page numbers on the page, the gridview does not do what it is supposed to do.

Why?
0
Comment
Question by:Faye_DBA
3 Comments
 
LVL 15

Accepted Solution

by:
jinal earned 500 total points
ID: 25041014

 protected void GrdVwBuyUpContributions_PageIndexChanging(Object sender, GridViewPageEventArgs e)
     {
 
       // Cancel the paging operation if the user attempts to navigate
       // to another page while the GridView control is in edit mode.
       if (GrdVwBuyUpContributions.EditIndex != -1)
       {
         // Use the Cancel property to cancel the paging operation.
         e.Cancel = true;
 
         // Display an error message.
         int newPageNumber = e.NewPageIndex;
         lblMessage.Text = "Please update the record before moving to page " +
           newPageNumber.ToString() + ".";
       }
       else
       {
         // Clear the error message.
         GrdVwBuyUpContributions.PageIndex = e.NewPageIndex;
         lblMessage.Text = "";
         
       }

Open in new window

0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

808 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question