Unable To Get The Datakey Value Of A Selected Row In GridView For Use In FormView
Sep 15, 2010
I have a gridview like this :
[code]....
I have done this before "n" number of times but I am not able to get it working this time. The trouble is that when the call for the Select Method of the formview goes to the relevant function - "GetCustomerByCusnum" I have a null value in its parameter "cusnum".
I know that I can write a selecting event and using CommandArgument, parse the value of the selected row and pass it into the Select method as a value but I dont want that solution. I know it works without the "Selecting" method but I cant recall how.
I have a gridview table and i need to select one record and insert the Datakey of the selected record to a formview textbox control. I'm completely lost...
For the first page loaded, it shows the correct DataKey value if I click on the command field.
However if I change to the next page of results, upon selecting a record the corresponding value is incorrect. It seems to keep the previous page information. How do I overcome this?
EDIT:
In the GridView1_SelectedIndexChanged method, I used the following:
[Code].....
I am unable to get the correct value after paging.
The FormView is bound to the same ObjectDataSource as the GridView and the FormView uses the autoPaging so I can't just use a separate DataSource for the FormView with just one parameter being the ID.
There must be a way to set the FormView PageIndex by a Datakey value.
I am fairly new to Visual Web Developer so I hope this makes sense.I have a page with a GridView (code below). When a person clicks on the Select Link, I would like it to direct them to a page with a FormView of the selected row so that it can be edited. I feel that this should be fairly basic but am having trouble finding the means to make it happen.
I use Gridview along with Formview for master/detail viewing. When I change sorting in gridview selected index changes, too. I mean, eg first top record is still selected but it's another id. What I want is to keep id of selected record, in case of need changing a page
I have a gridview that had a field called "GenericNameHepDrug" within the row. It's not the key field. I have an insert button that opens a formview in insertmode. How can I get the selected value of generichepdrug into the formview that opens when the button is clicked? I am using VB.NET 2.0.
here is some code from the source:
[Code]....
Here is what I tried to do in the code nehind of the button3_click:
[Code]....
[Code]....
CLearly I am lost. I have been working with ASP.NET VB for 2 months. I'm in over my head with figuring this one out - I've been at it for days.
I have followed your Nested level gridview and found it working, but i want add a button in the child element(from your example i will have a btn in Product grid and it should get contact_id (parent datakey value as well) ),as i need to update in database.
I have a GridView with an associated DataKey, which is the item ID. How do I retrieve that value inside the RowCommand event?
This seems to work, but I don't like the cast to LinkButton (what if some other command is firing the event?), and I'm not too confident about the NamingContainer bit.
LinkButton lb = (LinkButton)e.CommandSource; GridViewRow gvr = (GridViewRow)lb.NamingContainer; int id = (int)grid.DataKeys[gvr.RowIndex].Value;
I'm aware that I could instead pass that ID as the CommandArgument, but I chose to use DataKey to give me more flexibility.
I'm also aware that it's possible to use a hidden field for the ID, but I consider that a hack that I don't want to use.
What seems to happen is 'GridView1_RowUpdating' gets fired, at this point newEnglish, newFrench, and newGerman all have the new values as they are passed into 'Logic.Update'. Then the update functions updates correctly, but once the 'GridView1_RowUpdating' sub ends, it seems to call Logic.Update another time, and this is where the new values get lost for French and German (datakeys) but not English.
Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating Dim newEnglish As String Dim newFrench As String
And bind gridview from this table and ordred by Preference Column I put Linknbutton in gridview that code is:
protected void LinkButton11_Click(object sender, EventArgs e) { GridViewRow row = (sender as LinkButton).NamingContainer as GridViewRow; int id = Convert.ToInt32(GridView2.DataKeys[row.RowIndex].Value); using (SqlConnection conn = General.GetConnection()) {
[Code] .....
Oroblem is in this line:
int id = Convert.ToInt32(GridView2.DataKeys[row.RowIndex].Value);
I want when I click on linkbutton it use Id but here it use Preference data How I can define that according to Id column it go to
after my grid view updates a record I would like to run some code, I have tried to use SelectedDataKey.Value.ToString() to get the datakey. However it is null, the record updates so the value must be stored somehow?
I have a situation where I needed to add a row to my gridview. So say I have rows 3, 4 and 5.
My Datakeys are defined as "ID, CostingID". I did that so I can reference the two ID values I need when saving records.
here is the code in my RowDataBound event.
Basically if it is a datarow, I'm adding the value dataitems so I can get a sub total in the footer row.
Then, I have a boolean field called isDisbursement. So I sort my data by that field. So all records with the disbursement flag as true will display first.
Then as soon as the disbursement flag hits false I add a row to display the Total of the disbursement records value field.
All this works. My problem is, because I added a row at index 4 it inherits the datakey of the row that was at index 4 before. So when I'm looping through the grid rows to save the values I'm having a problem. I've attached an image so you will understand better what I'm trying to achieve. The "Total Disbursements" is the row I added. But it gets the following rows datakey because it is now at index 4.
when I do this, as soon as I reach row 4, although it doesn't have a CostingID it gets the CostingID of row 5 that used to be row 4:
Code: Dim CostingID As Long = Convert.ToInt64(Me.grvCostings.DataKeys(row.RowIndex).Values("CostingID").ToString) Dim strValue As String = CType(row.FindControl("txtValue"), TextBox).Text
Code: If e.Row.RowType = DataControlRowType.DataRow Then If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "value")) Then _SubTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, _ "value")) End If
i am still stumped with this operation: i am trying to retrieve a GridView selected row data..here is my code.. the commented part that gives me the selectedindex works just fine....but the one giving the selected row cell value does't work and there is no error.. The update operation is done successfully...weired. i need to assigned selected row cells values to variables ..do some calculations and then re-assign the result calculation to cell[9]..
I'm relatively new to the VS environment. I'm using VS2010 Beta 2 with VB. I have a Gridview setup to pull a list of employees. Next to their name I have edit and delete icons. When I leave the icons as ButtonFields, they pass the DataKey value to my code behind perfectly. When I convert the ButtonFields to TemplateFields, they no longer pass the DataKey.
My gridivew currently has 4 colums with the third being a subject column. I want this colum to have bold text if the datakey 'ReadStatus' is equal to false. I have had success if the column is bound to the gridview but 'ReadStatus' is only a datakey and not bound to the gridiview. My code is below:
I want to select a row in my GridView based on a known data key value at runtime.
In other words, I have a data key value, 2 for ex., and the primary key value of one of the rows in my GridView is 2. How can select that row? (Without having to go through each row to find which one matches my key, then setting the SelectedIndex.