7

I'm trying to get an int value from a GridView. Here is the screenshot of my gridview.

gridview screenshot

Here is the asp code for the Gridview

I have created a RowCommand method where when I press the Remove button on the GridView it is suppose to give me the int value of the 2nd column. So for example if I was to press the last Remove button it would give me an int value of 5.

This is my codebehind for the method

protected void grdOrder_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Remove")
    {

        int bigStore = Convert.ToInt32(grdOrder.SelectedRow.Cells[2].Text);

        clsStockCollection AnId = new clsStockCollection();

        clsStock TheOrder = new clsStock();
        TheOrder.OrderId = bigStore;
        AnId.DeleteOrder(TheOrder);
        DataCall();

    }
}

When I run this code I get this error. Object reference not set to an instance of an object.

I don't understand how or why I need to reference an object for example : Object As New Object. Why do I need to do this?

Here is the codebehind for the full class : pastebin.com/yzLR7s2w

A thanks in advance

lincolnk
  • 11,218
  • 4
  • 40
  • 61
JARRRRG
  • 917
  • 2
  • 14
  • 44

1 Answers1

7

SelectedRows only returns rows that have been selected; without a selection you won't get anything. Instead of int bigStore = Convert.ToInt32(grdOrder.SelectedRow.Cells[2].Text); try:

int rowIndex = Convert.ToInt32(e.CommandArgument); // Get the current row
int bigStore = Convert.ToInt32(grdOrder.Rows[rowIndex].Cells[2].Text);
lincolnk
  • 11,218
  • 4
  • 40
  • 61
Ryan Frame
  • 285
  • 1
  • 16