C# - Custom Paging For GridView In An UpdatePanel Not Firing PageIndexChanging Event
Mar 17, 2010
I have a GridView that uses custom paging inside an UpdatePanel (so that the paging and sorting of the gridview don't cause postback). The sorting works fine, but the paging doesn't. The PageIndexChanging event is never called. This is the aspx code:
<asp:UpdatePanel runat="server" ID="upSearchResults" ChildrenAsTriggers="true" UpdateMode="Always">
<ContentTemplate>
<asp:GridView ID="gvSearchResults" runat="server" AllowSorting="true" AutoGenerateColumns="false" AllowPaging="true" PageSize="10" OnDataBound="gvSearchResults_DataBound"
OnRowDataBound ="gvSearchResults_RowDataBound" OnSorting="gvSearchResults_Sorting" OnPageIndexChanging="gvSearchResults_PageIndexChanging" Width="100%" EnableSortingAndPagingCallbacks="false">
<Columns>
<asp:TemplateField HeaderText="Select" HeaderStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:HyperLink ID="lnkAdd" runat="server">Add</asp:HyperLink>
<asp:HiddenField ID="hfPersonId" runat="server" Value='<%# Eval("Id") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="First Name" DataField="FirstName" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" SortExpression="FirstName" />
<asp:BoundField HeaderText="Last Name" DataField="LastName" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" SortExpression="LastName" />
<asp:TemplateField HeaderText="Phone Number" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:Label ID="lblPhone" runat="server" Text="" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerTemplate>
<table width="100%" class="pager">
<tr>
<td>
</td>
</tr>
</table>
</PagerTemplate>
</asp:GridView>
<div class="btnContainer">
<div class="btn btn-height_small btn-style_dominant">
<asp:LinkButton ID="lbtNewRecord" runat="server" OnClick="lbtNewRecord_Click"><span>Create New Record</span></asp:LinkButton>
</div>
<div class="btn btn-height_small btn-style_subtle">
<a onclick="openParticipantModal();"><span>Cancel</span></a>
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gvSearchResults" EventName="PageIndexChanging" />
<asp:AsyncPostBackTrigger ControlID="gvSearchResults" EventName="Sorting" />
</Triggers>
</asp:UpdatePanel>
In the code behind I have a SetPaging method that is called on the GridView OnDataBound event:
private void SetPaging(GridView gv)
{
GridViewRow row = gv.BottomPagerRow;
var place = row.Cells[0];
var first = new LinkButton();
first.CommandName = "Page";
first.CommandArgument = "First";
first.Text = "First";
first.ToolTip = "First Page";
if (place != null) place.Controls.Add(first);
var lbl = new Label();
lbl.Text = " ";
if (place != null) place.Controls.Add(lbl);
var prev = new LinkButton();
prev.CommandName = "Page";
prev.CommandArgument = "Prev";
prev.Text = "Prev";
prev.ToolTip = "Previous Page";
if (place != null) place.Controls.Add(prev);
var lbl2 = new Label();
lbl2.Text = " ";
if (place != null) place.Controls.Add(lbl2);
for (int i = 1; i <= gv.PageCount; i++)
{
var btn = new LinkButton();
btn.CommandName = "Page";
btn.CommandArgument = i.ToString();
if (i == gv.PageIndex + 1)
{
btn.BackColor = Color.Gray;
}
btn.Text = i.ToString();
btn.ToolTip = "Page " + i.ToString();
if (place != null) place.Controls.Add(btn);
var lbl3 = new Label();
lbl3.Text = " ";
if (place != null) place.Controls.Add(lbl3);
}
var next = new LinkButton();
next.CommandName = "Page";
next.CommandArgument = "Next";
next.Text = "Next";
next.ToolTip = "Next Page";
if (place != null) place.Controls.Add(next);
var lbl4 = new Label();
lbl4.Text = " ";
if (place != null) place.Controls.Add(lbl4);
var last = new LinkButton();
last.CommandName = "Page";
last.CommandArgument = "Last";
last.Text = "Last";
last.ToolTip = "Last Page";
if (place != null) place.Controls.Add(last);
var lbl5 = new Label();
lbl5.Text = " ";
if (place != null) place.Controls.Add(lbl5);
}
The paging works if I don't use custom paging, but I really need to use the custom paging. I can't figure out why the PageIndexChanging event isn't fired when I'm using the custom paging.
I have a ImageButton inside a gridview. The gridview is inside update panel. i want to redirect to another page with the Clicking of the ImageButton. But it is not working inside update panel. what should i do?
I am trying to create a custom GridView with a header toolbar at the top that will contain icons to export the grid view to different formats like excel, word, etc.. The problem is, I cannot get the method to fire that is assigned to handle the click event for the corresponding Image Button. The page posts back, but the code I have in the method to handle the click event does not fire. I have followed examples in other posts and from what I can tell I have followed what others have done. Can somebody take a look at see if they can find something that I am doing wrong.
I have an UpdatePanel with a GridView. This GridView has a template column that is a DropDownList. The problem is that the SelectedIndexChanged event does not fire for the DropDownList. Here is the code:
when i select the page button the parameter value ourdataset.Tables("Products") is set to nothing ?
Protected Sub GridView1_PageIndexChanging1(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging GridView1.DataSource = SortDataTable(ourdataset.Tables("Products"), True)
I have a master page containing a ScriptManager control, and a Content Page containing a ScriptManagerProxy Control. Further on the content page I have an UpdatePanel control containing a GridView control and a server side button control. I have registered the button control as a trigger with the UpdatePanel control asynchronously and have set the UpdateMode of the UpdatePanel to "Conditional". I also have a "JumpLoader" control which is outside the UpdatePanel control. I have the following event for Jumploader wired up through Javascript. I am pasting the relevant sections of the code below:
i am developing the webpage using Visual 2008.In that i have i am using update panel and displaying values in the textbox bby using webservices from sql database.I need this thing if textbox values changes i need to change the backkground color of the text box also, so that user can easily identify which textbox values are changing. like this i have 5 more text boxes control in the same form .i have tried but i could not able to get done. i have written javascript code on change event of the text box it does work.
I have a checkbox, textbox and requiredfieldvalidator inside the updatepanel. Once user checks selects checkbox I am enabling requiredfieldvalidator.
I have one more textbox, requiredfieldvalidator, validationgroup and Linkbutton outside updatepanel.
Strange thing is Checkbox checked event not firing in some cases,
1. Check the checkbox (which enables requiredfieldvalidator) 2. Click the Linkbutton (fires two validators) 3. Uncheck the checkbox (which should disable requiredfieldvalidator) 4. Click the linkbutton again (again it fires two validator, which should fire only one validator)
Note: The problem only arising when I add javascript block to linkbutton in page load event.
1. chkresponse = new System.Web.UI.WebControls.CheckBox[cnumber + 1]; for (int i = 0; i < cnumber + 1; i++){ chkresponse[i] = new System.Web.UI.WebControls.CheckBox(); chkresponse[i].CheckedChanged += new EventHandler(chkresponse_CheckedChanged); chkresponse[i].AutoPostBack =true; }
2. thereafter adding them to a panel
Panel1.Controls.Add(chkresponse[n]);
3. then added the checkedchanged event:
public void chkresponse_CheckedChanged(Object sender, System.EventArgs e) {Label1.Text = "response";}
but the event is never fired. the panel is insdie an updatepanel.
I have read your article from aspsnippets.com about custom paging it really work, but there are a problem that if there are more record in database (2000 to 5000) than  number of page index  will be goes in large number. like 1 to 200, any way which can divide it  like 12345678910...2000.
This is a classic sort of question, I suppose, but it seems that most people are interested in having the textbox cause a postback. I'm not. I just want the event to fire when a postback occurs.
I have created a webpart with a custom editorpart. The editorpart renders with a textbox and a button. Clicking the button causes a dialog to open. When the dialog is closed, it sets the value of the textbox via javascript and then does __doPostBack using the ClientID of the editorpart.
The postback happens, but the TextChanged event never fires, and I'm not sure if it's a problem with the way __doPostBack is invoked, or if it's because of the way I'm setting up the event handler, or something else. Here's what I think is the relevant portion of the code from the editorpart:
protected override void CreateChildControls() { _txtListUrl = new TextBox();
I have a gridview that's inside a .ascx control that's dynamically embedded into another .ascx control, which is then called by a web form. The gridview will initially bind, but when any paging/sorting/command events are then triggered, I can't get any breakpoints inside the events to kick off. Additionally, when I look at the code-behind in the now-blank page, I see the old data sitting there.
what on earth is going on here? For edification, the .ascx page with the control is excerpted.
I am new to Ajax. I have problem in paging for gridview which is in a update panel.I set the update panel update mode to conditional. The 2nd page records are not display after I click the 2nd page.for ref:
I have a DetailsView control bound to an ObjectDataSource within a User Control (.ascx). It appears that the DetailsView.OnDataBound event is being fired on every page load or postback.
I do not see this behavior with a similiar DetailsView directly placed on an aspx page.
I am having a problem where my button click event is still firing even though my custom server-side validation is set to args.IsValid = false. I am debugging through the code and the validation is definitely being fired before the button click, and args.IsValid is definitely being set to false once the custom validation takes place, but it always makes its way to the button click event afterwards.
I have a simple form containing a gridview that displays some records. Everything works fine but I was hoping to wrap the grid view inside an updatepanle to prevent a full postback (flickering) when paging.
It doesn't seem to matter what I try, paging always causes a full postback which causes the page to flicker. What am I doing wrong?
Altough questions somehow similar to this have been asked for a number of times, but the question is still unsolved. Here is the question: I have a gridview which is contained in a tab container ajax control which itself is inside an updatepanel. Gridview works excellent and its corresponding methods are fired accurately, but when I enable paging, (e.g.) after I click on page 2, the gridview hides itself. here is my PageIndexChanging method:
I have a gridview which is inside the update panel. Also I have setup a multipe filters which works fine. After the search I get the correct returns and page numbers but as soon I switch the pages, it loses its state and lists all the page numbers.