Get value of GridView Cell in RowCommand
96,414
Solution 1
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.
Solution 2
@Romil: your code in C#:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
int id = (int)GridView1.DataKeys[row.RowIndex].Value;
}
(LinkButton is button in template field).
Solution 3
Try out this one..
GridViewRow gvRow = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
int rowIndex=gvRow.RowIndex
Solution 4
int index = Convert.ToInt32(e.CommandArgument);
It only work when you use your button in Gridview is
<Columns>
<asp:ButtonField ButtonType="Button" Text="Save" CommandName="Select" />
</Columns>
I not sure this is correct but it work for me
Solution 5
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Edit_Mob") {
GridViewRow row = (GridViewRow (((ImageButton)e.CommandSource).NamingContainer);
int RowIndex = row.RowIndex; // this find the index of row
int varName1 = Convert.ToInt32(((Label)row.FindControl("lbl_mobile_id")).Text.ToString()); //this store the value in varName1
}
}
Comments
-
DarrylGodden over 3 years
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.