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.
In a webform I have two textbox (txtDNI and txtAPE), 2 buttons (b1 and b2), 1 gridview (myGV) and 2 functions (dt1 and dt2) that return a DataTable txtDNI will be a parameter for dt1 function and txtAPE will be a parameter for dt2 function
When I press b1 myGV will be fill with the dt1 function's datatable and when I press b2 myGV will be fill with the dt2 function's datatable myGV allows paging=true and when I press the next index (2 or other) It appears a PageIndexChanging error. So the pagination isn't automatic and I have to code the PageIndexChanging event When I use a ObjectDataSource and I connect it with myGV the PageIndexChanging error dessapears and the pagination is automatic The problem is the ODS only have a one selectfunction (dt1 or dt2) but not both and the configuration is on design time
The same happen with the PageIndexChanging event where I fill myGV again (with dt1 or dt2) and set the new index (myGV.PageIndex = e.NewPageIndex) and What is the problem?? ... the problem is, for example, when the user erase txtDNI and change index of pagination ... the PageIndexChanging event is fired and call the dt1 function but the txtDNI(parameter) is empty and occurs an error, the function returns an empty datatable and myGV is empty too for avoid this I create viewstates variables for each function, so I have a 2 viewstates and fill them when the user press b1 or b2 When user press the pagination, the PageIndexChanging event catch the viewstate variable and convert it into a datatable and the problem of the automatic pagination is controled The problem is I don't have 1GV in the webForm I have 5GV in some pages... and I try to avoid...
1. all the code in the PageIndexChanging events of each GV in the webform. 2. use the viewstate variables
I am working on object data source and datagridview. I have given object data source to the grid view as the data source of grid. The issue which i m facing is that whenever i click on next page(like 2 or 3 or 1) it takes lot of time to fire. although it is fired but I have to wait a minute or two and then it fired.
Whenever I click any event(e.g. next page , page 5 ,3 or edit etc) of gridview it does not give response. If I wait for a minute then click one of event then it performs, and then again I have to wait to fire other event.
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 gridview which Pagesize set to 5. There will be some error while i click to page2, i knew it was caused by what but i got no good idea how to solve it.
Me.GridView.DataSource = DT.DefaultView Me.GridView.DataBind() For x As Integer = 0 To DT.Rows.Count - 1 If DT.Rows(x).Item("status") = "Verifying" Then Me.GridView.Rows(x).BackColor = Drawing.Color.Tomato ElseIf DT.Rows(x).Item("status") = "Processed" Then Me.GridView.Rows(x).BackColor = Drawing.Color.CadetBlue End If Next
I am having an issue with hidden cells when a PageIndexChanging event is fired in a gridview.
On the page_load I am setting the visibility of an edit button in a cell of a gridview to true or false depending on a users credentials.
Everything works as intended when the page is first loaded. When I click to a different page index the edit button is visible in all cells when it shouldn't be. The edit button is then visible in all cells even if I navigate back to the first page.
I've put a simple gridview on my Asp.net webpage. I've configured the fields via C# code:
gvMainDataGrid.AutoGenerateColumns = false; gvMainDataGrid.AutoGenerateDeleteButton = false; BoundField bfldSeqNmbr = new BoundField(); bfldSeqNmbr.DataField = "PKSequenceNmbr"; bfldSeqNmbr.Visible = false; gvMainDataGrid.Columns.Add(bfldSeqNmbr); BoundField bfldEmployeeCode = new BoundField(); bfldEmployeeCode.DataField = "Employee Code"; bfldEmployeeCode.HeaderText = "Employee Code"; gvMainDataGrid.Columns.Add(bfldEmployeeCode); BoundField bfldProjectCode = new BoundField(); bfldProjectCode.DataField = "Project Code"; bfldProjectCode.HeaderText = "Project Code"; gvMainDataGrid.Columns.Add(bfldProjectCode); BoundField bfldProcessCode = new BoundField(); bfldProcessCode.DataField = "Process Code"; bfldProcessCode.HeaderText = "Process Code"; gvMainDataGrid.Columns.Add(bfldProcessCode); BoundField bfldActivityDate = new BoundField(); bfldActivityDate.DataField = "Date"; bfldActivityDate.HeaderText = "Date"; gvMainDataGrid.Columns.Add(bfldActivityDate); BoundField bfldActivityHours = new BoundField(); bfldActivityHours.DataField = "Activity Hours"; bfldActivityHours.HeaderText = "Activity Hours"; gvMainDataGrid.Columns.Add(bfldActivityHours); CommandField cfldDeleteButton = new CommandField(); cfldDeleteButton.ShowDeleteButton = true; gvMainDataGrid.Columns.Add(cfldDeleteButton); It's data source is a Dataset retrieved from a webservice. Here is the C#code to bind the data to the gridview Service1 MyService = new Service1(); dsMainData = MyService.GetData(strIdNumber); gvMainDataGrid.DataSource = dsMainData; gvMainDataGrid.DataBind();
It retrieves great. No problems at all. Then, when I actually try to use the delete button, I get an error that the RowDeleting event is not being handled. I thought that was pretty explicit, so I created the event:
I have a gridview,sqldatasource and a link button for delete in the sample code below
When Delete is click the confirmation pops up. When I confirm yes, the rowdeleting event doesn't seem to be firing. I addeed a label to see if the event is firing. To avoid runtime errors I added a dummy but actual sql delete command. Once If I get it to work, I want call a stored procedure to delete the row.
My question is
1. Why is the gridview row deleting event not fired.
I have a very simple page that consisist of an UpdatePanel that contains a gridview. The gridview includes a delete button for each row, which should fire the Delete event. But the event never fires. If I set a breakpoint inside the event handler, it never gets hit and the row does not get deleted. When I say OK on the confirm dialog it just goes back to the page. I tried taking out the confirm button extender
almost done with my gridview model... Everything is working fine, bit today I noticed that my gridview delete only works on the first page of the paginated gridview. As soon as I goto the next page of my (eg) 10 rows, I can click on delete what I wan't but nothing happens. So this is what i use:
I have a gridview with a datasource, including filter- and selectparameters, paging, ipp selector etc. No code behind used. For the delete of a row I use a imagebutton in an templatefield:
it's working fine on the first page, but not on a nother page when I'm paging throught the total set. I also use a filterexpression and selectparameters (bases on dropdownlists) to filter the gridview. This also works great, but the same ater applying a filter: the delete imagebutton doesn't work then.Just found out it's caused because something I completely forgot: the gridview resides in a updatepanel. My structure is as follows:
I'm trying to fire the RowCommand event on a DataGrid control. I've previously done that, but not in this precise case.
Actually I'm working on someone else code so I can't really change the structure of his page excepted if it's really necessary.
The code of the page is heavy, so I've summarized the problem in a small project and the page behaves the same way too.
Basically I have a GridView which I bind to a DataSet. According to those data, I sometimes need to add, at the end of a row, a "Details" button (a LinkButton).
By pushing this button, I want to show a second GridView containing those details.
Let's add to this that the columns number of the first GridView is variable, those LinkButton need to be added dynamically.
The first GridView is generated without any problem and when my mouse is over one of the LinkButton, I can see that the link is something like "javascript:__doPostBack('dataGridView$ctl02$lnkDetail','')". When I click on this link and debug step by step : Page_Init, Page_Load, OnPrerender, RowDataBound but no RowCommand, and I don't know why!
In the exemple, I've explicitly set the EnableViewState to true from what I've read here and there, but nothing's changed.
I have an inner gridview called MyInnerGridView and I have operations I need to do in the Row_Updating event but this event is only firing for the last row of the outer gridview. I have pared down the sub to the following and the exception is only thrown when I try to edit an inner gridview record of the last record of the outer gridview.
[Code]....
why this is happening when I edit an inner gridview record of the last row of the outer gridview?
I have a gridview with Action button. When this button is clicked Javascript Confirm Popup will Display, after click on OK the Event have to fire GridviewRowCommand but the strange thing is: when the button is clicked, the rowcommand method is NOT fired! When I place the code on a separate page the event is fired, but when placed inside the tabcontainer for some reason it isnt...
In a .Net 2.0 project, I have a Calendar control within a GridView that has a method set for its OnSelectionChanged event. However, the event never fires and I don't understand why. Here's what's in my aspx page: