Forms Data Controls :: Way To Update For A Manually Bound GridView
Mar 3, 2010
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.
I have a SQL table containing a timestamp column. This table is displayed in ASP using GridView control. The timestamp column is indicated in the DataKeyNames property of the GridView. I'm using TemplateFields for all columns and a ItemTemplate HiddenField control connected to the timestamp column using Eval.
The data is displayed properly. I'm trying implement the optimistic concurrency in C# using the value of above mentioned timestamp and a stored procedure. The SQL stored procedure expects the @timestamp as varbinary(8). I'm not sure how to pass the value of gv_hid_timestamp back to the stored procedure. I'm using the following:
resulting in the following error: "Input string was not in correct format." (I also tried different data types but with similar result). I want to be able to pass this parameter programmatically from C# and not have to specify it on the UpdateParameters list.
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 an Objectdatasource configured with Select, Insert, Update & Delete queries in a Dataset. This datasource is linked to my Gridview. I do not require all fields in the table to be displayed or updated in my grid so i have turned off the Visible property on several.
However, when i go into Edit mode and trigger the UPDATE to the database table, i get NULL values updated in the columns i set False for the Visible property.
How can i remove these columns from the GridView and the Edit mode and still have them UPDATE with their current values instead of being overwritten with NULL's?
I have a TextBox in a nested FormView that I want to use for entering a date. I have added a calender extender to the TextBox and I want to set TextBox to read only so that the date can only be entered by using the calender extender. This way I can avoid improper date formats.
The problem is that when I enter a new date and click the Update button, the new date is not saved to the database. I have done some searching on the WEB for a solution, and I found that "Page.Form.SubmitDisabledControls = True" is used in the Page_Load event to solve this problem. I have tried this and it does not work.
Another solution that I have seen is to set the control to readonly at runtime in the FormView "ItemCreated" event. I have been unable to access the "ItemCreated" for this FormView because it is nested.
I have a gridview with data. I want a button which is not part of the gridview. Then if I press a button the gridview is sorted by two colums. i.e column1 ascending column2 descending.
I am not looking to work with a Sqldatasource as I use a data access layer. So the sort would have to be from a datatable and databind or directly with the gridview.
I don't want to databind a gridview, I want to be able to add rows myself within c# code. I can see there is a GridViewRow object and wondered if I can use this to add/remove rows as required?
I have a gridview that I am manually binding in my code behind page because I have to pull out information from other sources for the WHERE clause.The issue is that I get an error on the aspx page that one of the columns is not in the dataview, however when I run the SQL statement in SQL all the columns are there and there is not a spelling error.If I remove the column from the gridview then the page loads.I cannot see why the column is a problem.Here is my ASPX gridview code.
[Code...]
This is the line where the error occurs. <asp:Label ID="Label2" runat="server" Text='<%# Bind("date_submitted") %>'></asp:Label> Here is the code behind
[Code...]
Here is the ending SQL statement that works in SQL and does return the date_submitted column. SELECT id, title, date_submitted, (SELECT username FROM users WHERE (id = t.submitted_by_user_id)) AS submitted_by, (SELECT name FROM departments WHERE (id = t.department_id)) AS department FROM tickets AS t WHERE (closed_by_user_id IS NULL) AND (department_id = 48 OR t.department_id = 83) ORDER BY t.date_submitted DESC
Can you add a row of data programatically and bind it to the gridview? If so, how?
I have a grid with 2 columns. One of these columns is a template that runs a function and delivers an output. Within that function I need to manually add data that is not present in the sqldatasource to the grid and use it when performing aggregate functions.
ColumnA - ColumnB 1 - MyFunction(1) - adds new row (1, B)and returns A to column B. 2 - MyFunction(2) - May return just A
Grid should look like 1 - A 1 - B 2 - A
Even though SQLDataSource only returns 1 - AB 2 - A
I've got a GridView control with LinkButtons in different cells. Currently when someone clicks a link, it fires the ItemCommand passing the CommandName and the ID of the item the link is bound to. That all works fine. I need to modify it now to not use links anymore. It now needs to show a popup balloon with a link (styled to look like a button) and when the link is clicked, I want it to do the exact same thing. I'm sure there are several ways of doing this, but for time's and consistency's sake, I'm copying the method used from another page we have that is already doing this. It has a hidden DIV on the page with the link in it. When you hover over a link, javascript repositions the div and makes it visible.
So what I need to do is pass my CommandName and item ID to the javascript so that it can trigger the postback when they click that single link. I know this is not the only way to get to the end result, but what I want to do if possible, is still fire the GridView's ItemCommand and set he DataListCommandEventArgs' CommandName and CommandArgument properties. Can someone explain how, under normal circumstances, clicking the LinkButton in the GridView fires the ItemCommand? I know that the LinkButton's click event is forwarded to the GridView but what gets sent from the client side that let's the server know the link was clicked?
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
I have a need to call Oracle stored procs to populate a gridview. I'm able to call one stored proc to get the column header text and another one to get the corresponding data. Currently I'm using a datareader, but I want my gridview to have sorting and paging enabled, so likely I'll need to read the data into a datatable and then bind the gridview to it.I've never had to manually configure a gridview - usually just use autoformatting.1. Do I essentially set up the columns manually in the gridview since it has no data to go off of in design mode? I'm guessing most of these will be Bound fields. A few of my columns are going to display date values that need to be formatted a certain way and one column will be a link that needs to call a second method to populate a different grid. I'm not sure what the syntax for this is.
I have a GridView with bound columns, for which I am manually setting the ItemWidth and HeaderWidth to 500px, and nothing happens. Is there some trick to getting this to work?
This is a column a large amount of text in it, and it keeps sizing to the width of the header text, which is simply "note". I don't want to set Wrap to false, becuase then the colummn could be thousands of px wide in cases.
I have tried a few different ways to add columns of data to a gridview. I have just about got success, except for I am having problems with only getting the last value in my array of data to insert into the gridview column. For example if I return 4 rows from an sql query, with the values of 2, 4, 6, 8. The last value (8) shows in all for rows of the gridview for that particular column.
not quite sure where I'm going wrong here. I'm trying to manually handle sorting in a Gridview that is populated with the following data source:
[Code]....
[Code]....
[Code]....
At the moment, nothing is happening when I click on the column headings. I ran it in debugging mode in Visual Studio and put a breakpoint on the Sorting event handler. I noticed that the variable dtSortTable is empty even after the TryCast(VacanciesGV.DataSource, DataTable). If I hover over this statement in debugging, it shows the data from the file system, so it does appear to be reading it.
I have a FormView bound to LinqDataSource, that is intended to allow editing of a single product's details, that is selected from a GridView. The LDS has a Where parameter set to point to the GridView control (i.e. a ControlParameter).
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?
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