2010-01-22 69 views
1

我有一個GridView綁定字段和複選框的模板字段。我按照檢查複選框編寫了刪除記錄的代碼。我的問題是GridView中的Asp.net CheckBox失去其價值

HtmlInputCheckBox chk; 
foreach(GridViewRow dr in dgvdetails.Rows) 
{ 
    chk = (HtmlInputCheckBox)dr.FindControl("ch"); 
    chk.Checked = true; 
    if (chk.Checked)///  **here checkbox is not checked even if I'm check it** 
    { 
     pl.id = int.Parse(chk.Value); 
     bl.deletedgvdetails(pl); 
    } 
} 

回答

0

有兩件事情想到可能在這裏玩。我不確定你的代碼何時運行 - 關於頁面生命週期 - 但是如果它是在按鈕點擊事件中處理的,你可能想要確保你的網格視圖在頁面事件期間沒有被「反彈」因爲Page_Load在按鈕點擊事件觸發之前運行。如果是這種情況,那麼在您的刪除方法運行之前,您的所有複選框都將被重新初始化。其次,在你的foreach循環中,你可能要注意當前行的RowType。循環的第一次迭代可能會集中在標題行(如果您爲GridView啓用了它),因此可能沒有複選框。

如果您使用e.Row.FindControl() - 以防萬一,檢查if(chk!= null){}總是一個好主意。