Forms Data Controls :: Erase Values In All Controls In A GridViewRow?
Mar 30, 2010
Is there an easier way to erase the data from all controls in a gridviewrow than my current approach (code below)?
The problem: When a new type of control is added to the grid, like a radiobutton, it would not get handled here without adding to the code. The tests for type of control can get long and monotonous.
The solution I am seeking: Test the control once for "is WebControl". If it is a web control, cast it and call a single command that would erase its data. Does such a concept exist in ASP.NET 2.0/C#? I know I can do other things on the WebControl level, like set backcolor, but would like to do the same for erasing data.
I have the DataKey value, I want to use that to get the GridViewRow and retrieve information from various columns - I see lots on information on how to get the datakey from a gridview row, but not the reverse.
My head aches from beating it against the wall for so long. I have a gridview that is populated from a code behind table. The gridview has 3 bound lables, a checkbox (unbound) and another label (unbound). All fields are in template fields. I have coded a vb sub with one command: beep. It fires perfectly every time a user checks the gridview ckeckbox. Here are the columns of the gridview:
1. Player - bound label
2. Description- bound label
3. Amount- bound label
4. ToPay - ckeckbox
5. AmountToPay - unbound label
When a gridviewrow's checkbox is checked (or unchecked) the code determines the check status. If it is checked then the AmountToPay label is to display the same value of the third label (Amount) or it will clear it's text value if the checkbox is unchecking the box. Here is my code:
The gridview:
[Code]....
Here is the vb code that does beep():
[Code]....
I have tried about a dozen ways of reading the checked property of the checkbox but nothing works (sender, e, gridview, rows, items, cells, findcontrol, adnauseum). I want to work the code like this somehow:
If row.Checkbox.checkproperty=true then set lblToBePaid.Text = the lblAmount.Text Else lblToBePaid.Text = "" EndIf
I would like that ID of subcontrol generated from the GridViewRow (NamingContainer) be named including database unique ID.
Exemple :
Suppose in the first colum of my GridView I have a Label displaying the name of an item fetch from a database table.
SQL Database table definition
SQLTable
- UniqueID - Name
In this table I have the following records
- 1956 Hello - 3013 World - ... ...
Suppose I have a GridView having a label (id="lbName") in the first column template.
Now I'm binding GridView using this query : SELECT UniqueID, Name FROM SQLTable
After binding, the HTML result will be :
myGridView_ctl101_lbName
But I would like that NamingContainer names sub items like this :
myGridView_ctl1956_lbName
So I have tried in the RowDataBound event of the GridView : e.Row.NamingContainer.ID = (DataRowView)e.Row.DataItem)["UniqueID"].ToString()At first look it output exactly what I need but after that I can't get working Edit mode, it seem to break DataKeys or something else.
I tried translating this from vb but getting the error on e.Row.DataItem("CustomerID").ToString i tried varios things but no gooddbSrc.SelectCommand = "SELECT * FROM Orders WHERE CustomerID = '" + e.Row.DataItem("CustomerID").ToString + "' ORDER BY OrderDate";
Which is pretty much eaxactly what I was after! . I have been trying to alter the edit functionality instead of actually having to click on an edit button the user can click anywhere on a selected row to bring up the edit popup window. I have been trying to figure this out for a couple of days and cannot find a way to get it going.
I would rather specify fields in my code behind than embedding them in the .aspx page.
I also have a subtotal label control in my repeater that I would like to populate its text property by mutiplying two of the database values e.g productprice * unitprice shown in my repeater.
I need to do this in code behind, looping through the repeater. Any idea of how I can do this in C#?
Updates to the edited item are not passing the new / updated values but rather the original values. And I can't for the life of me figure out why when I change the original value in an edit textbox and post the update the new value is not being passed. I get the original value. Perhaps fresh eyes can spot the problem. This should be super basic but apparently I'm missing something.
Here's the code for the Item and Edit templates. The code behind is below this.
i take data from Sqlserver database , and my prblem is that i want to get old and new values from gridview and base on that i want to change there background colors .. i try gridview rowupdating , editing ,updated Events but when i debug no break point hit and there was no value in ViewSate that i declare ,
I have a grid view and I added edit and Save buttons to it. When I click on edit I am able to edit the data but when I click on save I amgetting the data before edit.Please see my code below.Eg: I have start date as 2005-10-10 12:00 AM so After I click On edit it is letting me to edit, So If I edit the start date to 2010-10-10 12:00 PM and click on the save button I am stil getting the old start date. which is 2005-10-10 12:00 AM instead of 2010-10-10 12:00 PM
I am using asp.net/c# application. In my application, I have a gridview.<asp:GridView id ="gv_QuestionList" runat="server"> </asp:GridView>In Code Behind, I created dynamic textboxes and DropDownLists on RowDataBound.
[Code]....
I have a Save button out side the gridview which stores all the row values into database. when I click the "Save" button, I lost dyanamically ceated controls like textbox,dropdown and values (on postback).How can i get all the dynamically created controls and values after the post back?
i have a gridview in one form showempdetails.aspx and another form is to edit the value of selected row editempdetails.aspx in this page i have textboxes and dropdowns.
im using querystring which is bringing empid
(eg: empid=1 should bind all other columns to my controls of editempdetails.aspx)
below code is of empedit.aspx this takes loginid to employees_add.aspx
[Code]....
here by using primary key i should pass all my values of previous selected corresponding values into my textboxes.
So I have a gridview control and I am binding it's datasource dynamically base on a dropdownlist. The gridview contains autogenerated columns with auto generated edit buttons. The datasource binded to the gridview is IQueryable<T> where T will be different for different datasource.
My detail problem is below:
A GridView binded to datasource dynamically with all autogenerated columns. When user click edit link, it will display value in autogenerated textboxes.
When user click update link, I am able to capture the user entered value in the textboxes in RowUpdating event, then pass those values to Linq update function to update the database. Now, the problem begin when I try to dynamically add validation controls to each editing row. In RowDataBound event, I am checking the editrowindex then adding validation control to gridview cell and pointing to cell.controls[0] which is the textbox control when the row is in edit mode, I am dynamically setting the textbox control id so that the validation control can set controltovalidate property. The validation control works, but the updating function is setting everything on the grid to empty string.
I am check the textbox text value in the loop, which returns "" for all cells except the id column. It was returning the correct value before I add the validation control. I guess since I added the validation control on rowdatabound event, will it rerender it's own autogenerated textbox in edit mode so that the text value of textbox no longer available in rowupdating event?
Is there a better or correct way to get the cell textbox value? I am using ((TextBox)dc.Controls[0]).Text where dc is DataControlFieldCell in rowupdating event.