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";
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.
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 have a dropdown list it contains bookid and book name,i have binded it inside the grid view in row databound control,now i want to save the data that requires book id bt during save there will be no access of that book id from drop down that contains inside the grid view control.how it can be solved.
I have a gridview that is selectable. Below it I have a dropdownlist and a textbox. The dropdownlist has the options for each column in the row(I am using an ajax autocomplete extender that checks for related values in the textbox based of which dropdownlist value is selected.) I want to take that a step further and see if I can select a row based on what is in the textbox on the textchanged event. Right now im playing around with using a datatable and then filling a string[] of whatever column the dropdownlist is selected on. protected void txtFilter_TextChanged(object sender, EventArgs e) { DataTable dt; SqlCommand cmd = new SqlCommand("SELECT * FROM General", csbg2); SqlDataAdapter da = new SqlDataAdapter(cmd); dt = fillDatatable(cmd, da); string[] items = new string[dt.Rows.Count]; switch (ddlEducation.SelectedValue) [code]...
I have a checkbox and a textbox in a GridView (for every row), and I'd like to be able to write some javascript that would enable and disable the textbox depending on the state of the checkbox (checked or unchecked). I guess I'd have to give JS the row index somehow.
I have a lot of data to display in a GridView. Because there's so much information per row, I'd like to be able to display additional information when a user clicks on the row, so I thought a PopupExtender from the AJAX Toolkit would be perfect.
Ideally, I want the popup to display whenever any of the controls within the row are selected. I've been able to successfully attach the PopupExtender to a single control within the row, but I can't get the pop-up to attach to the row itself.
I would have thought that setting the PopupExtender's TargetControlId to the Row's ClientID within the RowDataBound event would work, but when I do this I get a runtime error:
TargetControlID of 'popupExtId' is not valid. A control with ID 'gvList_ctl02' could not be found.
I noticed that the GridViewRow is rendered, the tr element does not include an id, so I also tried extending the GridView control to override the CreateRow method to render the id - using this method I was able to render the row's ID (e.g. gvList_ctl02), but the same runtime error was thrown when I added the PopupExtender back into the code.
I also tried binding the showPopup() javascript command to the row's onclick event to get the popup to display manually; whilst the click event is registered OK and is definitely triggered, the popup is still not shown.
Does anyone have any idea how to / if you can bind a PopupExtender to a GridViewRow?
My row bound code is as follows:
protected void gvList_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { // Bind the popup extender's target ID to the row ID // This will cause a runtime error PopupControlExtender pop = e.Row.FindControl("popupExtId") as PopupControlExtender; pop.TargetControlID = e.Row.ClientID; // Also bind the client side click handler to try to get the popup to show // The alert is triggered and no javascript error is generated, but the popup does not display e.Row.Attributes.Add("onclick", "alert('Row Clicked'); $find('" + pop.BehaviorID + "').showPopup();"); } }
I would like to know how i could display data from an itemtemplate or any other form views/data-bound controls without having it render in tables? i know theres control adaptors, but is this reliable and will it work with asp.net 3.5?
How to display empty GridView to insert new record if no data retreived for some record on the result from data table?Actually i am trying to give a user an option to add recrod from Gridview. On result of some query it is perfectly displaying data and a footer row with the insertion textbox but when there is no data in the gridview it is not displaying. It should display with footer having insert textbox.
I have a datagridview control that I'm using to display cache data to the end used on a web form. The issue that I'm having is that every time I re-run the application, and the cache data is re-generated... it loads duplicate data that's being displayed to the end user. I can't seem to figure out how to keep this from happening.
What I would like to have happen is that only unique data rows be returned and cached for the end user. Unless there are new data rows on the database that needs to be included in the cache data results...the previous data results should not be duplicated. I've tried to change a few properties on the datagridview control, but nothing seem to keep this from happening.
I have a listview control bound to an SqlDataSource. As part of the formatting I want to add a title to the data returned from my database. For instance if the data base returns a phone number I want to add 'Tel.' first. However I do not want to diplay this title if the datafield is empty. Here is what I have done so far.
Business is a phone number. If the data field contains a number I get: Tel. 1234 123456. If the field is empty I get Tel. If Business is null I want nothing dsplayed, how do I do this?
Using a class component, an Object data source and a formview I am successfully pulliing data from a SQL database. In some cases the rows contain one or more Null values and I would like them to be ignored completely. My simple code follows:-