2013-03-20 11 views
6

Próbuję uzyskać wartość int z GridView. Oto zrzut ekranu mojego widoku siatki.Uzyskiwanie wartości z komórki Gridview

gridview screenshot

Oto kod asp dla GridView

I stworzyli metodę RowCommand gdzie po naciśnięciu przycisku Usuń w GridView jest to przypuszczać, aby dać mi int wartość drugiej kolumny. Tak na przykład, gdybym był na ostatnim naciśnięciu przycisku Usuń byłoby dać mi wartość INT 5.

To mój codebehind dla metody

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(); 

    } 
} 

Gdy ten kod uzyskać ten błąd. Odwołanie do obiektu nie jest ustawione na instancję obiektu.

Nie rozumiem, jak i dlaczego muszę odwoływać się do obiektu, na przykład: Obiekt jako nowy obiekt. Dlaczego muszę to zrobić?

Oto codebehind do pełnej klasy: pastebin.com/yzLR7s2w

góry dzięki

+0

Która linia rzuca wyjątek? –

+0

Linia 46: int bigStore = Convert.ToInt32 (grdOrder.SelectedRow.Cells [2] .Text); – JARRRRG

Odpowiedz

7

SelectedRows zwraca tylko wiersze, które zostały wybrane; bez wyboru nic nie dostaniesz. Zamiast int bigStore = Convert.ToInt32(grdOrder.SelectedRow.Cells[2].Text); spróbuj:

int rowIndex = Convert.ToInt32(e.CommandArgument); // Get the current row 
int bigStore = Convert.ToInt32(grdOrder.Rows[rowIndex].Cells[2].Text);