When deleting a GridView row in the UI (via a LinkButton whose CommandName="Delete"), the view does not automatically refresh and continues to display the deleted row until I take some other action (manually refresh page, navigate away and back again, etc).
In the debugger, I see the row is successfully deleted, and both the RowDeleting and RowDeleted events fire, but the GridView's PreRender event does not fire afterwards (in contrast, that PreRender event does fire when first loading the page, when adding a new row, etc).
I've used GridViews in similar configurations without having this problem, but I don't see obvious differences. It seems the process is aborting before the PreRender event, but no exceptions are being thrown, and stepping off the end of the RowDeleted event in the debugger brings me back to the UI as though the process were completing normally.
where I should look for the trouble or a solution? Other possibly-relevant details: the GridView is bound to a SqlDataSource; the data source does not declare any DeleteCommand; I handle the deletion by calling a stored procedure in the RowCommand handler, after which I rebind the GridView with DataBind(), at which point I can see the GridView's Rows.Count has decreased by one as I'd expect. Everything seems fine through the RowDeleted event, then... nothing!
UPDATE: tried calling the SP to delete in the RowDeleting handler rather than RowCommand handler... made no difference. The row is still deleted but processing terminates without calling the GridView's PreRender, and the deleted row is left on display until some further UI interaction updates the view.
UPDATE2: I'm not even getting the Page's PreRender event, which precedes the control PreRender events. Will continue working backwards to see if I can find where things are halting, since stepping out of the RowDeleted event seems to be the end of the line...
UPDATE3: I've been poking around some more and, although it complicates my code, I was able to get things working by declaring a DeleteCommand in the GridView's SqlDataSource that just does the simple row (record) deletion, and then in the RowDeleted handler calling the additional stuff I had in my stored procedure that needs to happen along with the primary deletion. While it's less convenient having the primary deletion in one place and the related processing in another, at least it's working.
But I don't know what to conclude from this: that a DeleteCommand is needed for proper page life cycle? that one shouldn't do a deletion in a stored procedure in the RowCommand handler? something else? I wish I could identify what, specifically, is broken about my initial attempt...
I am running some custom code in a user control using the <%=Code%> tag. The problem is that the code seems to run before the PreRender event. Is there any way for met to get this code to run after the PreRender event?
I need to dynamically modify the contents of a column in a GridView1 before it is displayed. Basically, I need to convert every 'Environment.NewLine' in a field to a so it displays as a new line on an ASP.NET page. How do I do this?
I have changed the look and feel of the grid by modifying the cols, rows in the gridview. I need to save this in the gridview viewsate, so that it load the modified look and feel next time it loads from the viewsate.
I have been led to believe that the best point to bind your controls is the PreRender. As all the controls are ready and this is the last stage before rendering etc. Is this correct or should controls be bound at a different point?
Would a call to a database be called if you put the databind method in the PreRender event of a listbox and the listbox was rendered on the screen for example? This is a specific example regarding a listbox, but basically does code in PreRender only get called if the control is rendered on the screen. If this is so, is it good practice to put code into PreRender such as databinding?
I want to access the raw HTML code that my ASP.NET System.Web.UI.Page is about to render.
How can i do that? Is there a property or method like System.Web.UI.Page.HTML or something like that.
I know I could loop through the Controls List of the page and get access to all the Literal Controls etc, but I was wondering if there's a direct property or method that can return me the raw html, which I can modify just before rendering the page.
I have a site with about 7-8 tab panels with update panels. On all the other tabs there doesn't seem to be a problem except the newest tab I created outside of the project and then piece by piece brought on.To make a long story short -
Users selected a dropdownlist outside of the panels and based on what they select certain tabs display.
Both inside the selectedchange of that dropdownlist I have -
[Code]....
Which just double checks the dropdown since there is a change if the select portion isnt at the top insert it. I also have in the pre-render of that dropdownlist9 the following - [Code]....
Which is supposed to put the select into the dropdownmenu. But for just this dropdownmenu for reasons beyond me after the first dropdownlist is changed the select statements are not at the top of dropdownlist9. But on the 2nd change and there after they are inserted.
Really running around circles with this. The microsoft visual studio just seems so odd and unrelievable lately.
I'm sure I'm missing something extremely obvious here, but at this point I can't see it so I need the help.Anyway, I've got a repeater inside of an UpdatePanel. As of right now, I've stripped it down to this, just to try and isolate the problem:
[Code]....
Whether I add the handler during itemdatabound or I add the handler within the repeater itself, it doesn't seem to matter...the event itself doesn't fire. The AutoPostback itself seems to fire, but the event itself doesn't.
In my gridview I have fields for inserting a new record in the footer.
In my objectdatasource selecting event if no records came back I bind a single mock row to force the footer to show so they can still add records. Since the row does not contain real data I hide the row.
I am creating Dynamic UserControls with Dynamic AjaxControls. Then I store each of the UserControls in a Collection. On Postback I recall the UserControls in the collection to Re-Create the interface. It works if i only use Standard HTML controls but does NOT work with AJAX controls. I get this error on PostBack Extender controls may not be registered after PreRender. So far I have tried the following:
MyBase.OnPreRender(e) in Page and Usercontrol EnsureChildControls() in the OnInit Added ScriptManager to the MasterPage None of this stuff is working... If I re-create all the controls including the ones inside the usercontrol then i get no error however it takes forever to do a postback as opposed to just recalling the collection of UserControls.
I get this error on postback from using a dynamic created controls, specifically the Ajax ComboBox. If I use DropDownList instead, then I don't get the error. How to over come this issue? I do need to use theAjax ComboBox because it allow extra properties not available in DropDownListHere is the complete error:Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: Script controls may not be registered after PreRender.My ToolKitScriptManager resides in the MasterPage.
I have a GridView, here I am adding the LinkButtons at runtime to the GridView cells. I am also attacing an click event on these LinkButtons.
The issue is that when I populate the GridView from the Page_load the LinkButton click works, but if I move GridView polulation code in the Page_PreRender event the click event doesn't executes.
Code:
private void Page_PreRender(object sender, System.EventArgs e) { //does not fires the Click event of dynamically generated LinkButtons GridView1.DataSource = getDataTable();
I have a DetailsView on my page, bounded throught ObjectDS (but I think it's not important). Some field is readonly for some users - based on role membership and other paramaters. I've tried to use the PreRender event to manage these field's readonly state. Everything is working - except one template field: when I click first time on Edit button the dropdown list stay readonly independently the role membership. When I click on Cancel than Edit again the control state is good. Code of PreRender event handler:
[Code]....
Environment:Web Developer 2008 Express .NET Fw. 3.5 Windows XP
I have a gridview with rows of data and a group of radio buttons for each row that can be selected. But when selected the event never fires for the radio dropdown.... why?
I have a nested GridView that is placed inside a ListView. The GridView renders perfectly fine with all the entities that are bound inside its datasource.
Each record in my gridview has two buttons - 'delete' and 'edit'. The issue that I am having is that the methods wired to each of these buttons never get fired.
I think the reason for this behaviour is because my ListView's data binding happens only on the first page load, and not on every subsequent postback. As a result, when a postback happens, the events of the nested gridview are never wired up again - hence my methods are not getting fired.
Here is what my code [simplified] looks like:
[code]...
I tried modifying the above code and removing the "!IsPostBack" clause, and the events actually got fired when a button inside the GridView was clicked. However, I do not feel comfortable doing a databind on every postback and think there should be a better solution than that.
I have a GridView, which features a a checkbox on each row (in a template field), where it calls a method upon checked changed (well, when they click submit - no auto post back)
My problem is, the checked change refuses to fire more than once - if I just change the check state of one checkbox in the grid, it works fine. More than one and it only fires the event once.
The Update button of the gridview is not firing. I checked the database table to make sure that the read/write privileges are set - they are. The primary key is defined, and the DataKeyNames attribute is set.
At the first loading of my page, duration of PreRender takes upto 13 seconds. That page has basically a gridview control which bind to SqlServer query by SqlDataSource. When I execute query seperately, it takes only 0.02 second.
On the other hand, for the next loadings of same page by postback, duration of PreRender varies from 0.5 second to 3-4 seconds.
In addition to gridview, there are several dropdownlist, update panel, ImageButton in gridview. I use paging for Gridview.
Which strategy should i follow to increase performance of this page?
I want to implement hit tracking in an HttpModule in my ASP.NET app. Pretty simple, I thought. However, the BeginRequest event of my HttpModule is firing twice for each page hit. The site is very simple right now...no security, just a bit of database work. Should log one row per page hit. Why is this event firing twice?
Moreover, IHttpModule.BeginRequest actually fires a different number of times for the first page hit when running for the first time (from a closed web browser)...3 times when I'm hitting the DB to provide dynamic data for the page, and only 1 time for pages where the DB isn't hit. It fires 2 times for every page hit after the first one, regardless of whether or not I'm touching the DB.
It's interesting to note that Application_BeginRequest (in Global.asax) is always firing only once.