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

        }
   }
Share:
96,414
DarrylGodden
Author by

DarrylGodden

UX/UI analyst, photographer, designer.

Updated on November 06, 2020

Comments

  • DarrylGodden
    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.