我的问题是:
我有一个GridView,它绑定到具有CheckBoxes列的声明的DTO对象列表。另外,我在页面上有一个“保存”按钮。我的任务结束于获取所有行,检查CheckBox并获取包含数据。不幸的是,Button1_Click上的row.DataItem = null,因为,我正在使用if(!IsPostBack)gw.DataBind()语句(否则,我无法获得CheckBox状态)。你能给我解决问题的最佳做法吗?
提前谢谢!
答案 0 :(得分:1)
如果您执行if(!IsPostBack) --> gw.DataBind()
,则会重新初始化您的GridView
,并且复选框将设置为再次取消选中。
在您的情况下,在Button1_Click
事件中,您可以遍历DataRow
上的每个GridView
,找到选中该复选框的行并获取所有选定的行数据。< / p>
foreach (GridViewRow gvRow in gw.Rows) {
// Find your checkbox
CheckBox chkBox = (CheckBox)gvRow.FindControl("checkBox");
if (chkBox.Checked) {
// Get your values
string value1 = gvRow.Cells[1].Text;
string value2 = gvRow.Cells[2].Text;
// etc...
}
}