DataGrid中添加CheckBox

在DataGrid中要實現確認功能

最初的設想是:在每行前面加一個CheckBox,以實現當點擊CheckBox時,立即觸發事件(如:on click="Chk_Click()"),獲取當前行的id和CheckBox的checked屬性值,最後更新數據庫。

在解決問題之前,我搜過很多相關文檔,大部分是如何實現全選,而且還是通過一個按鈕來觸發事件的,明顯不符合自己的要求,但還是提供了一些信息。

事實上遇到幾個問題:
Chk_Click()的輸入參數類型是object和System.EventArgs,如何獲取當前行的id和checked屬性值

自己水平差,輸入參數貌似都沒什麼作用,我利用循環foreach (DataGridItem di in this.DataGrid1.Items)判斷到底點擊哪一行的CheckBox,如果是已經確認的行,在綁定數據的時候把CheckBox的Enable屬性設爲False,這樣當遇到第一個Enable爲True,Checked爲True的行即爲點擊的行,然後退出循環,這樣效率會不會高點?但是又想到,萬一用戶誤點錯行,Enable就變成False,無法修改過來,所以不能設置Enable屬性!最後,我使用CheckBox的Checked屬性和flag字段合在一起判斷,如果Checked爲True,flag爲0說明是點擊確認的行,如果Checked爲False,flag爲1說明是點擊取消確認的行。

foreach (DataGridItem di in this.DataGrid1.Items)
{
if ( ((CheckBox)di.FindControl("chk")).Checked == true && ((Label)di.FindControl("flag")).Text == "0" )
{
strsql = "update table1 set flag = 1 where id = " + di.Cells[1].Text;
break;
}

if ( ((CheckBox)di.FindControl("chk")).Checked == false && ((Label)di.FindControl("flag")).Text == "1" )
{
strsql = "update table1 set flag = 0 where id = " + di.Cells[1].Text;
break;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章