Get value of GridView Cell in RowCommand
asp.net, c#, gridview, vb.net
Solution
Dim row As GridViewRow = CType(CType(e.CommandSource, Control).NamingContainer, GridViewRow)
Then get the key or get the cell and cast to a datacontrolfield.
Dim id As Guid = GridView1.DataKeys(row.RowIndex).Value
Dim email As String = CType(row.Cells(2), DataControlFieldCell).Text
Remark: this only works with Boundfields.
Problem
I need to get the value of a cell from the RowCommand event, but the value is not in the PrimaryKeyNames parameter of the GridView. Currently I have: ``` if (e.CommandName == "DeleteBanner") { GridViewRow row = gvCurrentPubBanner.SelectedRow; string BannerName = row.Cells[1].Text; ``` This doesn't work (index out of range error), I've also tried: ``` int index = Convert.ToInt32(e.CommandArgument); GridViewRow row = gvCurrentBanners.Rows[index]; ``` This doesn't work either as the CommandArgument (the banner ID) is not the row ID.