【发布时间】:2018-06-12 20:55:19
【问题描述】:
我希望有人能够帮助我解决我的 WebForms 问题。
我有一个使用Gridview 显示在网页上的列表,网格视图中的一列有一个复选框。向 gridview 添加复选框不是我所做的问题,我的问题是我无法读取复选框是否被选中。当逐行遍历网格时,我指定带有复选框的单元格,它返回的只是 。
这是我用来插入复选框的代码示例。
CheckBox chk = new CheckBox();
chk.EnableViewState = true;
chk.Enabled = true;
chk.Checked = true;
chk.ID = "chkb";
e.Row.Cells[DATA_TABLE_GRID_VIEW_COLUMN_CLOSE].Controls.Add(chk);
这是在网格的_RowDataBound 方法中完成的(如果有区别的话)。
我尝试了几种不同的方法来获取价值,但都没有为我提供我正在寻找的结果。
foreach (GridViewRow row in theGrid.Rows)
{
var val = (CheckBox)row.FindControl("ctl00_ctl00_MainContentPlaceHolder_ContentPlaceHolder1_GridViewMeter_ctl03_chkb");
}
在本例中,出于测试目的,我硬编码了一个 ID,我首先检查了该 ID 是否存在于页面上。 这是为网格视图生成的 HTML 示例。
<td>
<span>
<input id="ctl00_ctl00_MainContentPlaceHolder_ContentPlaceHolder1_GridViewMeter_ctl03_chkb" type="checkbox" name="ctl00$ctl00$MainContentPlaceHolder$ContentPlaceHolder1$GridViewMeter$ctl03$chkb" checked="checked">
</span>
我也尝试过直接检查单元格中的控件,但它什么也没返回
row.Cells[36].Controls.Count
还有什么我可以尝试或做的事情来获取复选框的值。
【问题讨论】:
-
你不应该使用生成的Id。使用您在代码“chkb”中添加的那个。但是奇怪的是你在Cell上面找不到它,你确定它是正确的cell吗?
-
感谢您的回复,我不完全理解网格视图,但它为行中的每个单元格提供了一个唯一的 ID,并将我设置的 ID 附加到末尾。我还检查并仔细检查了它是正确的单元格。