GridView - Update Row Command Does Not Revert Back To Display-only
Jan 19, 2010
I have a GridView that is populated from a LinqDataSource. When I update a row, the RowCommand fires and the change is persisted to the database, but the Grid does not refresh. I have it in an UpdatePanel and explicitely call Update() in the RowCommand handler, but there is no postback and the page just sits there in Edit mode. Once I click cancel, it will return to view-only and the grid shows the new value.
something in the wiring of the GridView regarding the data source is wrong. No exception bubbles up, though. A stripped-down copy of the markup is below.
how would i do my Gridview delete command like a update command?
im using a datasource... and my delete command is like my update command... so i can change the status into "INACTIVE"...
DeleteCommand="UPDATE ACCOUNT_MAINTENANCE SET am_status = 'INACTIVE' WHERE (accmain_no = @accmain_no)"
UpdateCommand="UPDATE [ACCOUNT_MAINTENANCE] SET [account_type] = UPPER(@account_type), [min_deposit] = @min_deposit, [min_capital] = @min_capital WHERE [accmain_no] = @accmain_no"
when i press my delete command at gridview... the status changed into "INACTIVE" but when i refresh or press f5... it automatically update the status into "INACTIVE" also...
I am trying to use an Update Command within my GridView. I need to find the "FindControl" for the Edit Command textboxes.
Ie. When the user clicks the Edit button, the row is populated with dropdown boxes, textboxes, etc for editting. Then when the user clicks on Update (button) and the GridView1_RowCommand function is activated with 'if (e.CommandName == "Update")' statement with my FindControl. etc. and my sql UPDATE command statements are used. How do I convert my FooterRow info to my Edit FINDCONTROL info?
I have 3 gridviews in one of my web page. I have simplified the system structure in the image below(further description will be stated below the image): As shown in the image above, the web site(presentation layer) will work closely with the Business Logic layer(BLL) and Data Access Layer(DLL). ObjectDataSource control will be the middle man to select, update, insert and delete the data in the gridviews. During Select, returned data from the database at DAL will be stored in a datatable and return to BLL and then the website itself.
The data in the returned datatable will be filetered by type using RowFilter method and stored into the 3 dataviews. Each dataview will act as the datasource for the 3 GridViews respectively, and therefore I specified the datasource programatically instead of setting the datasourceid for each gridview.
However, the Update(command button) and Delete(template field) doesn't work, the RowUpdating and RowDeleting event wasn't trigger when I click on the button, but it works if I set the gridviews' datasourceid to the objectdatasource. I couldn't figure out why, hope that someone who have come across the same problem couldn't provide some guidance.
I have a asp.net gridview control on my page with several fields and a couple of command fields. However, the update command is giving me problems.
Here is what works. The update command works provided I put straight text into the textboxes that appear. I even have one field that contains a dropdown list which works fine.
Here's the problem. I have two fields that need to access their value programmatically. These fields will reflect the current datetime and the current loggedin user from active directory. I have already created public strings in the C# code.
When I run the edit command on the asp form the grid uses one "DataKeyNames" element. With this the grid can update the selectedrow. However, I haven't been able to access it programmatically in the C# code. I can access the selectedrow in the "selectedindexchanged" event but then I am not able to update my fields in the gridview itself. So, part one of my question is how to I access the "DataKeyNames" properties of a gridview control.
if I can't access the "DataKeyName" property perhaps I could set the label nested within the gridview to the "myCurrentUser()" public string. I am inserting my code to hopefully make this clearer.
I've recently started working in ASP.NET and RDBMS.I'm making a test form where I can do basic add,update,delete operations.I'm using OracleDataClient to do the DB operations.I was able to populate a listbox using OracleDataAdapter.
Now after clicking on update button,I intend to Update in DB.I've Dataadapter with it's update property.But the update query is not happening.The examples I saw over net all have Select command before Update.Is it actually like that or am I missing some point.
How does Oracle DataClient work with Insert,Update,Delete Commands.
I have 3 gridviews in one of my web page, each of which will display different data based on the typeid. I have simplified the system structure in the image below(further description will be stated below the image):
As shown in the image above, the web site(presentation layer) will work closely with the Business Logic layer(BLL) and Data Access Layer(DLL). ObjectDataSource control will be the middle man to select, update, insert and delete the data in the gridviews.
During Select, returned data from the database at DAL will be stored in a datatable and return to BLL and then the website itself.
[code]....
However, the Update(command button) and Delete(template field) doesn't work,the RowUpdating and RowDeleting event wasn't trigger when I click on the button, but it works if I set the gridviews' datasourceid to the objectdatasource.
I have a gridview and sqldatasource in a form. My sqldatasource has select,delete and update command. The delete command is working but the update doest not work when I click the update command field.
Bug: UPDATE command Does NOT Work as Expected on a DataBound GridView This was tested in VS2005 and VS2008
Took a while to figure this out - A simple recurse thru Page Controls Makes UPDATE Not Work as expected.
To Recreate this bug:
A simple Gridview bound to an Objectdatasource on a page with ALLOWEDIT ALLOWDELETE
If one inserts some code (a function call in my example) that just recurses the PAGE controls in either the PAGE_PREINIT, PAGE_INIT, PAGE_INITCOMPLETE events,
Then the UPDATE does not FIRE! and After Pressing UPDATE the GRID does not BIND! You Get A Blank Page - Funny thing tought it's only the UPDATE Functionality that gets affected by this - Everything else works fine including EDIT & DELETE.
If the same function call (recurse thru page controls) is added in the PAGE_PRELOAD, PAGE_LOAD -- Then the UPDATE starts working again as expected.
BELOW Is SAMPLE Code using the NORTHWIND DB Products Table and a Typed DATASET.XSD - You can use your own datasource for the ObjectDatasource - (Note I took out the Foreingkey constraint in products table from Nortwind for delete to work)
NOTE: One should be able to just cut and paste the function PAGECONTROLS_RECURSETEST on any working form that has a bound Gridview with Update functionality and you should be able recreate the bug that way by calling the function from the different page_events
I have a gridview, getting data from sql server, there is an Edit link to get the detailed information for example, for a user from database.
this link open a new page with detailed information and when I click the updated button,I want to go back to the same page with that users informaton.
I set the page size to 10, it means I can see only 10 users per page,and if I click the edit link on page 25,and update the users info, I want to go back to page 25.
Should I use viewstate or gridview has any commnad to go back to the same page? the code is written in ASP.net C# sqlserver,
I have a gridview in an update panel with the following code to select a row, this in turn updates another updatepanel with details from the form record.
protected void gvMainGrid_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { //Make the entire row clickable to select this record //Uses javascript to post page back e.Row.Attributes["onmouseover"] = "this.style.cursor='hand';this.style.textDecoration='underline';"; e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';"; e.Row.Attributes.Add("onclick", ClientScript.GetPostBackClientHyperlink(this.gvMainGrid, "Select$" + e.Row.RowIndex)); } }
I am manually binding the gridview from a database and don't want to rebind the grid just to highlight the row, but I can't seem to add any javascript to the onclick event, it seems to either show the GetPostBackClientHyperlink or the row highlight javascript.
I have a gridview, getting data from sql server, there is an Edit link to get the detailed information for example, for a user from database.
this link open a new page with detailed information and when I click the updated button,I want to go back to the same page with that users informaton.
I set the page size to 10, it means I can see only 10 users per page,and if I click the edit link on page 25,and update the users info, I want to go back to page 25.
Should I use viewstate or gridview has any commnad to go back to the same page? the code is written in ASP.net C# sqlserver,
Looking for the best technique on handling or at least some documentation showing an example.
Starting Page
Gridview control withing an update panel (also various controls used for filtering NOT IN UPDATE PANEL)
Databinding does not happen during page load.
Databinding is initiated when update panel trigger (asp:Button object) is clicked
Hyperlink column is added to returned records
Hyperlink posts to a separate page for detail for record which the hyperlink was clicked.
Second Page
While navigating via the browser back button to previous page (which contained the update panel and gridview) only the (various controls used for filtering) have retained state. The gridview is not shown (which is how the page loads initially when starting) How can I retain the state of the Gridview and add a step in the browser history all together?
I have a page that binds data from DB to a DetailsView.I want to use the auto-generated Update command.
Everything went OK, and also updating was successful, but if I remove any field that I don't want to have chance to update, then the Update command doesn't update! the old values retain!
I mean: if all of the fields are present in the detailsView, the update will be OK, otherwise, the update will NOT update any thing.I've tried to mark the fields that I don't want to view as "Visible = 'false'" but with no good results!
I'm having a problem with the results of a Gridview. The SQL statement I use works in SQL Management Studio, but in my .NET app, it only display a few of the results. The part of the SQL that seems to be effecting it is in the where statement I use like:
[Code]....
@Consultant comes from the value of a selected dropdown.
I have a gridview that does a select statement against a sql database. What I want to do is have the data in the gridview refresh upon either hitting the back button or the forward button.
If the back button is pressed it should give me yesterdays data from the table. If I hit the forward button it should give me tomorrows data, at the same time i want the forward button to be limited to going forward only 5 days from todays date. I figure that I have to do this in a Updatepanel however I am unsure as to how to do this.
My program is doing good when I suddenly bumped into this problem. I dont know how to do the next functionality that I need to accomplish. I am done with inserting values, showing the gridview etc and it works great. Now my problem is the update command.
I have 2 tables table: tblDest Fields: destLastName destFname destEmail Table:tblSource Fields: Sourcelastname SourceFname SourceEmai
Now, when I run my update command in sql server, it works great! I just right click the database, click new query and i run this command:
Code:
update tblDest set DestEmail =(Select SourceEmail from tblSource where tblSource.SourceFname = tblDest.DestFname and tblSource.SourceLastname = tblDest.DestLastname) what the query does, is it updates the table tbldest email where lastname and firstname exists in both tables that are equal, the question is, I want to automate this, I am done with inserting values, the problem is, I dont know how to run the update command, I tried doing this:
Code:
Dim sqlds As New SqlDataSource sqlds.ConnectionString = ConfigurationManager.ConnectionStrings("sqlconnect").ConnectionString sqlds.ProviderName = ConfigurationManager.ConnectionStrings("sqlconnect").ProviderName sqlds.UpdateCommand = "update tblDest set DestEmail =(Select SourceEmail from tblSource where tblSource.SourceFname = tblDest.DestFname and tblSource.SourceLastname = tblDest.DestLastname)" DestGrid.DataSource = sqlds DestGrid.DataBind()
I have a gridview bound to a sqldatasource with editing enabled. If I click Edit, then either Cancel or Update, the update or cancel occurs and the Edit button reappears. However, I cannot then click the browser's back button without having the Update and Cancel buttons reappear. A second click of the back button takes me to a state where the Edit button shows again, *then* another back button click will take me to the referring page (the one before the one with the gridview on it.) IOW, it looks like the postbacks are cached. How can I prevent this and have the back button go straight to the referring page?
In my gridview, when in non-edit mode, my edit (pencil) and delete (X) buttons show up side-by-side as expected: Attachment 130089
However, when I click the edit button (pencil) to go into edit mode, the update (diskette) and cancel (undo arrow) appear as shown below, and the edit and delete buttons of the other rows appear the same "wrong" way as well. Attachment 130091
I think I did something stupid recently. I tried out the new vs2010 and probably changed settings to the newer version of the .net framework. My asp.net pages are working normally as before locally on my machine, but after I uploaded my web.config file to my ISP, the same pages are not working online.The version of asp.net my ISP has is 2.00.50727. I can upgrade that to 3.0 for an addional cost, but how do I revert back to my previous version, is this done in the wetb.config file perhaps?