2013-03-20 65 views
6

Tôi đang cố gắng lấy giá trị int từ GridView. Đây là ảnh chụp màn hình của GridView của tôi.Lấy giá trị từ ô Gridview

gridview screenshot

Đây là mã asp cho GridView

Tôi đã tạo ra một phương pháp RowCommand nơi khi tôi nhấn nút Remove trên GridView nó là giả sử để cho tôi int giá trị của cột thứ 2. Vì vậy, ví dụ nếu tôi đã phải bấm nút Remove cuối cùng nó sẽ cung cấp cho tôi một giá trị int của 5.

Đây là codebehind của tôi đối với phương pháp

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

    } 
} 

Khi tôi chạy mã này, tôi nhận được lỗi này. Tham chiếu đối tượng không được đặt thành phiên bản của đối tượng.

Tôi không hiểu làm thế nào hoặc tại sao tôi cần phải tham chiếu một đối tượng ví dụ: Object As New Object. Tại sao tôi cần phải làm điều này?

Đây là codebehind cho lớp đầy đủ: pastebin.com/yzLR7s2w

Một cảm ơn trước

+0

Dòng nào đang loại trừ ngoại lệ? –

+0

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

Trả lời

7

SelectedRows chỉ trả lại hàng đã được lựa chọn; không có lựa chọn, bạn sẽ không nhận được gì. Thay vì int bigStore = Convert.ToInt32(grdOrder.SelectedRow.Cells[2].Text); hãy thử:

int rowIndex = Convert.ToInt32(e.CommandArgument); // Get the current row 
int bigStore = Convert.ToInt32(grdOrder.Rows[rowIndex].Cells[2].Text); 
Các vấn đề liên quan