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.

Original source