Asp.net - How To Add A Row To A Data-bound Gridview Without Causing Viewstate Errors
Jan 31, 2011
I'm trying to add a row grouping row to my data-bound gridview. It works fine on the first response, but at the postback i got the "Failed to load viewstate" error.There is the code for the GridView's RowDataBound event:
Private Sub AddGroupingRow(ByRef eRow As GridViewRow, ByVal Css As String, ByVal ColSpan As Integer, ByVal Txt As String)
Dim cell As New TableCell()
cell.ColumnSpan = ColSpan
cell.CssClass = "Spacing FieldCell"
cell.Text = Txt
Dim row As New GridViewRow(-1, -1, DataControlRowType.DataRow, DataControlRowState.Normal)
row.CssClass = Css
row.Cells.Add(cell)
[code]...
After adding personalization and authentication to my site, I was getting pitched out of my application( which is on a hosted server), and sent back to the log in screen . I disabled authentication to see if I could figure out what was going on. I found that
I was getting a system error:
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
This error has been reported elsewhere [URL] so I made the following change to my web.config
This seems to have worked to a point, because with authentication DISABLED, I no longer get the error. But when I RE_ENABLE authentication, I get pitched out randomly back to the login screen. Time out is not an issue. It only happens when I move very quickly through screens that are doing a lot of postbacks.
This is the authentication stuff from my web.config
I am using the URL Rewriter (Intelligencia.UrlRewriter). I have a page with the name sitename/user/search.aspx and the rewrite is sitename/test/search Now the problem is... When I am on sitename/test/search and I click the search button, I get an error "The resource cannot be found." because when the page posts back to itself, it goes to sitename/test/searchsearch.aspx basically putting the original name in the URL which messes everything up. What should I do? Some pages do it and other pages do not do this problem with me.
Working through Steven Sanderson's excellent Pro ASP.Net MVC Framework book.I am trying to reference the TempData collection to display a message after an item has been successfully updated and so have placed a reference to this on my Master Page.[Code]....
This is giving me the following compile time errors:
Error 1 The name 'TempData' does not exist in the current context <programme location>
Error 2 The name 'TempData' does not exist in the current context <programme location>
If I reference TempData on a content page it compiles (and works) fine.
Has anyone encountered while using Context.RewriteUrl in global.asax causes this error: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster ?
Here is the scenario, let's say I have a url
http://mysite.com/admin/login.aspx instead typing the whole url in address, user can type either http://mysite.com/admin/ or http://mysite.com/admin which all end up at http://mysite.com/admin/login.aspx. When a user type http://mysite.com/admin and entered correct login info, and press login button it gets the error above. How can I resolve this? Tried setting EnableValidateRequest to false and EnableViewstateMac to false also even I do not want to use this approach and still does not work.
I have a gridview which has a checkbox column which are set to automatically postback. When a checkbox is clicked, a partial postback occurs, and the associated record is displayed to the user (this is the required function).My problem is regarding when a user clicks a number of checkboxes in quick succession. I have got ajax request queuing working fine, so each checkbox postback is eventually dealt with. However as the gridview also postsback, it resets its viewstate on which boxes are checked, removing some of the boxes which the user may have checked.I've attempted to take off the viewstate on the gridview which seems to achieve nothing, neither does placing the gridview in a separate update panel.
I have an update panel with a number of [asp:AsyncPostBackTrigger...] controls, and everything was working fine. But now, something keeps inserting duplicate AsyncTriggers, and instead of simply being [asp:AsyncPostBackTrigger...] controls they're [System.Web.UI.AsyncPostBackTrigger...] controls, and I get parser errors as a result. So I delete the duplicate triggers, and they get re-inserted within a few minutes, seemingly randomly.
I have a web page which is using PasswordRecovery control.Its working fine but I have a scenario in which I have to disable Viewstate for the whole application.Now after disabling viewstate when I visit the webpage I have noticed that PasswordRecovery controls is not working (Every times when I submit the default button to go to step 2, the postback occur but not moving to step 2).
My ViewState implementation causes "Confirm Form Resubmission" dialog to appear each time I press 'back' button, but when I create test site using microsoft's aspx their viewstate isn't causing such problems. What should I know to prevent my browser from showing "Confirm Form Resubmission"? I've found an interesting resource here, the problem described in terms of browser caching, if the page is cached than it won't make a post at all, now it is interesting how to make my page cachable by default.
If the gridview binds to empty dataset, I need to still show a gridview so that users can ADD more using the textfields in the bottom of the footer template. Since the gridview is empty it won't bind not allowing rendering of the <footer template> I guess I should create a empty dataset if the gridview is empty. How do I check for this and can this be done in GridviewRowEventArgs
Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
The above error occurs with gridview control , when used with template field columns with item template / and edit templates etc. updating a row within gridview, at the time of loadiong it loads perfectly fined, but when tried to modify an existing row within gridview control, then it produces the error. Make sure the grid view control has to be a child control which manages the child table info with in a master form. to reproduce the above problem the grid view must be loading the child records info of a master within the masterform, meaning both master data and gridview data all to be managed in one single form.
I had to replace gridview control with datagrid and then it worked perfectly fine. I wasted almost 4 days of my time., there is no way we could figure out the problem. here is the full info of the problem.
Server Error in '/' Application.
Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
Source Error:
[Code]....
Stack Trace:
[HttpException (0x80004005): Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.] System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +306 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Page.LoadAllState() +312 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1661
Version Information: Microsoft .NET Framework Version:2.0.50727.3603; ASP.NET Version:2.0.50727.3082
I have a gridview control on a .aspx page. It is a bound control. So basically I didn't have to write any code to pull the data from database and show it on the grid.
So far so good. But where is no data is not returned from the database, I want to display something on the page saying "No data returned". But I don't know which gridview control event gets fired so that I can write some code in it to check if the records returned are zero.
I have a query expression which I am binding to a GridView in Page_Load. The data I want to capture in the SelectedIndexChaned event is in a BoundField defined thus:
I have a foreign key (TeamID) in a GridView. I use a TemplateField to display it as the lookup value (TeamName) in a label, and a dropdown for editing. When row is selected and SelectedIndexChanged is fired, I want to access the TeamID. I can get the TeamName from the label. I tried putting the TeamID in DataKeyNames, but that fouled up my dropdown when saving (it reverts to the original value). So, how can I get the TeamID?
I am trying to create a bound column and bind the data with the below piece of code . And the column has two files Name and Fee but the code binds only the Fees column and Name column become empty..
Code: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls;
I am looking for a method to format gridview bound data using javascript.
I know you can have custom formating in Eval using:
[Code]....
But I am looking for a way to perform this task on client side, rather than doing it on the server.
For example if I want to format a date field being bound in a custom way, something like emails date received in gmail. (Only show time if it is today's date [15:30] and only show day and month if it is this year date [14 Jan] and show the full date if it is not this year [10/10/2009].
So, how I use javascript to format a field (ie. custom date format or setting a control visibility)?
I am having a hard time updating from my gridview based the value that I am setting in the datakeynames it is the Ucc field I keep getting and index out of range exception on the e.keys[0]. I have done this before so I am confused what I am missing here.
what it is i have a datagrid bound to a datatable.This datatable fills from a sql table. This datatable will have 2 columns which is 'part' and 'description'.What it is I want to have a couple of chk boxes next to the datagrid which will filter it by column 'part'.The issue is the datagrid will have about 1000 records so i dont want to do a for next loop searching for field part for a certain filter
DLRepository is a class with method getDLandRules. I am binding the gridview with the list that is returned by method. Now I would like to iterate through the list and add 1 more column to each row that is returned. currently, I am getting an error
GridView1.Rows[row].Cells[7].Text 'GridView1.Rows[row].Cells[7]' threw an exception of type 'System.ArgumentOutOfRangeException' strin