Forms Data Controls :: Manual Call On ObjectDataSource Causing Multiple Updates
Dec 14, 2010
I have GridView that is bound to an ObjectDataSource and within that GridView I have CheckBox, DropDownList, TextBox and Label controls. All the controls except the CheckBoxs are working like a champ or normal display and Delete (Insert is handled outside the GridView, it works also). The CheckBox values are passed into the update method for the ObjectDataSource as type byte. Without doing any custom coding the CheckBoxs were always unchecked (regardless of the data being 1 or 0) and when I edit a row in the GridView and saved the values the CheckBox controls would always be 0 even if the check boxes where checked. After searching web I found a suggestion to change the binding on the CheckBox controls from, Bind("Monday") to this, CheckUncheck(DataBinder.Eval(Container.DataItem, "Monday")) with CheckUncheck being a method to make 0 or null = false and 1 = true. This seemed to the do the trick and it set the CheckBoxs correctly in the DataGrid, I was giving myself high-fives, until I tried to update a row.
When doing the update, as with my first attempt, it would always set the CheckBox values to 0, thus ignoring the checked property of the CheckBox. So I search the web again and found a suggestion to handle the update manually, due to the binding being one way. So I created a myUnhappyGrid_RowUpdating event handler and changed all the columns in the GridView to template so I could do the old school .FindControl on them and grab the values. Once I was able to grab the values from the row to be updated I added them to the ObjectDataSource .UpdateParameters and called ObjectDataSource.Update() and it worked, kind of. Now came the next trial, it did the update into the database just fine and I was happy, until. I finished stepping though the code. As I stepped through the code the update on the ObjectDataSource got called two more times, thus undoing what I had just spent hours fixing. First, is the road traveled the right way to do it? Second, if I am on the correct road how can I suppress the additional two updates that follow my manual .update call on the ObjectDataSource?
I have Tables customer (Customerid),Product(Productid),Order(orderid). i have created view Customerid,Productid,orderid . is it posssible that if i insert value in view it will get inserted in table itself. can i do it in MS SQL SERVER
We currently have a page with a listview control that has textboxes and an update button for each row. Users are able to update the database one row at a time.This is problematic in countries where the internet connections are very slow because a round trip is needed for each row update and this can become impossible to use.We need to create a page which allows multiple row updates so that each round trip is more productive. There woudl be just one update button on each page and users could enter values into each row. Clicking the update button would update each changed row of the database.We currently use linq 2 sql. I would imagine that we could still use this in the above scenario??? Or is there a better data connection methode to use in this scenario.
I want to create 2 columns and 5 rows and want to give heading to those 2 columns and would like to manually enter the values in the rows, how ? (I don't want to connect this gridview with the database)
I have a gridview which uses an EditItemTemplate and an ItemTemplate for an 'Effect' column. The ItemTemplate simply displays the bound data using a label control. The EditItemTemplate defines a databound DropDownlist control which contains all the possible selections.
The gridview also contains a bound 'State' column which gives the State of each row. I have already been able to access this field in the gridview_RowDataBound event, so far using the value to decide whether to re-colour a row or not. What I would like to do is use this value to determine whether to use the ItemTemplate or the EditItemTemplate for each row.
Effectively I want to be able to decide whether to display just the data (For an Approved row) or display the DropDownList and allow the user to make updates (For an In Work row). I have searched for information on this issue online but have not found a lot, so I presume that my approach is not possible.
I have created a GridView, but the DataSet is created manually.Do I loose the built-in sort functionality of a Gridview? ....because I'm getting an unhandled exception when I try and click on the header now to sort. So I assume the answer is YES.
Environment is : vwd2008, asp.net 3.5, linq to sql object model, formview, stored procedure used for query.On going problem... I have a simplified page with a webform content area from a master page. The content area contains a FormView connected to an object data source thru the design view tag. The O/R designer has the Lease Table and the stored procedure in the method area.
The stored procedure selects all records from a single table. I an using the DatabaseDataContext and selecting stored procedure name which has "return SingleResult".. There is no code written; the design view was used to create everything. The stored procedure executes in VWD 2008 express tab and shows desired records. I would like to use the O/R and Linq to SQL, and objectdatasource BUT.
I go this code that can so a manual sorting on grid view. The code works fine for "ASC", when I wanted to sort the field to DESC, it never works. Second, it also failed when I switch to another page. Case 1: By default, the column is sorted DESC, then I switch to ASC, works fine, then I switch to DESC, it failed (remain at ASC).Case 2: By default, the column is sorted DESC, then I switch to ASC, works fine, then I switch to other page, it failed (remain at DESC on new page).
I've been trying to marry up the listview and the Data pager with my own, Database class that pulls the information from the database.
I can display the information ok no problem, fortunately this time I know what the problem is, but I cannot figure out a way around the problem.
In my Page_Load event I fill out the listview accordingly:
[Code]....
The problem lies in the postback, I need to figure out a way get the information as to what state the DataPager is in so I could update the Query accordingly.
I know there is a StartRowIndex avaialbe but this does not get updated in the Page_Load event.
I can't figure out why I might be getting this error. It happens on an ajax call.This is the full error text:
-- 6/21/2010 6:09:10 PM -- System.Web.HttpException (0x80004005): Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerWrapper'. ---> System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Web.HttpException (0x80004005): OutputStream is not available when a custom TextWriter is used. at System.Web.HttpResponse.get_OutputStream() at AjaxControlToolkit.ToolkitScriptManager.OutputCombinedScriptFile(HttpContext context) in C:AjaxBuildAjaxServerAjaxControlToolkitToolkitScriptManagerToolkitScriptManager.cs:line 286 at AjaxControlToolkit.ToolkitScriptManager.OnInit(EventArgs e) in C:AjaxBuildAjaxServerAjaxControlToolkitToolkitScriptManagerToolkitScriptManager.cs:line 246 at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) at System.Web.UI.Page.ProcessRequest(HttpContext context) at System.Web.Mvc.ViewPage.ProcessRequest(HttpContext context).......................
I have a GridView or DetailsView and its bound to a CslaDataSource.I noticed that the "Object_Select()" event is fired automatically with every time the page is loaded or refreshed.How I can perfrom mnaual biding between the DetailsView Control and CslaDataSource ?I want to control binding via code using the DetailsView.DataBind() method in certain cases only.
I implement a manual sorting codes. It works only for ASC sorting. If you try to sorting gridview again by the same field it does not work. I mean how to solve for the sorting function for DESC
Im looking for a flexible way of filtering a GridView from multiple DropDownLists and TextBoxes(from/to date). Filtering by the DDLS and txtboxes works fine separately, but I can't get them working good together.I have followed the Data Access tutorial and created a three-tier website(DAL - BLL - Pres). I have done it by creating a tableadapter with a multiple methods that receives parameters I want to filter on.The DropDownLists depend on each other, so you cannot filter on something that isnt there.How can I add textboxes make sure that only correct dates based on the DropDownLists can be chosen? Using a DropDownList and maybe get 100 dates is not that good.
Sub PFTFormView_ItemUpdating(ByVal sender As Object, ByVal e As FormViewUpdateEventArgs) Dim PFTObj As New PFT Dim PFTDST As New Data.DataSet Dim newPFTLastName As String = DirectCast(PFTFormView.FindControl("txtPFTLastName"), TextBox).Text Dim newPFTFirstName As String = DirectCast(PFTFormView.FindControl("txtPFTFirstName"), TextBox).Text PFTObj.PFTLastName = newPFTLastName PFTObj.PFTFirstName = newPFTFirstName PFTObj.PFTHome = DirectCast(PFTFormView.FindControl("txtPFTHome"), TextBox).Text If PFTObj.UpdatePFT(Session("PFTId")) Then Me.lblErrorMessage.Text = "PFT Update Successfully" Else ' Me.lblErrorMessage.Text = "PFT Update UnSuccessfully" End If PFTDST = Nothing PFTObj = Nothing end sub
I think ive narrowed down my problem, I have a form but the "submit" buttons are being handled by Javascript - since i need to build arrays manually outside of the model for processing
[Code]....
I'm calling the Controller Action "Update" and passing it to string Arrays, when its finished - i want it to redirect to another action - it doesnt.
[Code]....
I just really wanna construct those arrays, and pass them to a controller...i think the ajax is waiting on a result and ignoring the redirect.
so here is the setup. I am building a page that has a listview, a datapager, and 3 datapagerfield (2 x NextPreviousPagerField, 1 x NumericPagerField), and a objectdatasource to tide all of this together.
It was all working fine until I put a breakpoint into the SelectMethod specified in the objectdatsource control. It seems like that for each datapagerfield control, it is calling the selectmethod and selectcount method. Hence, whenever a user paged, it calls the database 6 times instead of 2 (I don't have caching turned on atm). If I remove one datapagerfield, it will remove 2 calls.
Now this is build in asp.net 3.5 SP1 in VS2008. When I copied the same code files to a asp.net 4.0 VS2010 solution, it duplicate call seems to be gone.
I have a two gridviews that I populate it through some tables from a database.
In the same page I have a ASP:Button with onclick event.
When click is perform I wish to write a code that compares the old values of both gridviews (that retrieved from database), with the new values, and if changes were made then create the changes in the database.
I think that the best way is to loop every gridview sepertly, and compares it with the values in the database
How do I do that? Do you have a sample code that loops on gridview and compares with the old values to detect changes?
I have a stored procedure that updates orderhistory. When I test it from Enterprise Manager, that sucker works fine. But when accessing it from asp.net I get the following error... Procedure or function sp_UpdateOrderHistory has too many arguments specified. From my aspx page I created a gridview, enabled editing, deleted the columns I didn't want displayed. I specified the datasource, pointing at the sp for updating. So far so good..
I can click on Edit, and the edit fields are shown, but when I click UPDATE, the above error is generated. I've checked the sp parameters and they match (as far as I can tell) the update paramters in the page. Not sure why this is failing to update?
I've set up a formview with a Linqdata source to allow users to edit records. When I run it, edit data and submit, it blows up and tells me "Linq datasource6 does not support the Select property when the Delete, Insert or Update operations are enabled." I googled that warning and saw a couple of posts on this forum saying the problem is the slect statement has to be removed from the Linq data source for it to allow updates.
But if I remove the select statement then how do I show the user specific info on pageload? plus I thought the two way databind was an advantge of the datasource control.