有没有办法检测ASP.NET中的数据绑定网格视图中是否选中了复选框字段?我可以使用foreach
检索cell.Text
循环中的所有其他单元格值。由于它是数据绑定(到ObjectDataSource),列和单元格没有显式设置ID,我似乎无法找到一个属性让我知道单元格包含复选框或只是文本。所有单元格都是DataControlFieldCell类型,因此我也无法根据类型进行检查。想法?
编辑:
foreach (GridViewRow row in report_gv.Rows)
{
data += "<TR>";
foreach (TableCell cell in row.Cells)
{
data += "<TD>" + cell.Text + "</TD>";
//If this is a checkbox (bit value from the DB) cell.Text isn't going to return anything
}
data += "</TR>";
}
答案 0 :(得分:1)
foreach (GridViewRow row in myGridView) {
foreach (TableCell cell in row.Cells) {
foreach (Control ctrl in cell.Controls) {
if (ctrl is CheckBox) {
CheckBox cb = (CheckBox)ctrl;
// use cb
} else if (cell is TextBox) {
} else if (cell is Label) {
}
}
}
}
您可以根据需要对此进行展开以进行处理。
答案 1 :(得分:0)
你可以做到。但更容易转换为<TemplateField>
,这样您就可以为CheckBox
分配ID。然后你的foreach去了:
foreach (GridViewRow row in myGridView) {
CheckBox myCB = (CheckBox)row.FindControl("gvIdentifier");
// Do something with myCB
}
答案 2 :(得分:0)
在GridView.RowDataBound活动中,您可以访问每行内的每个checkbox
。
试试这样的事情
<ItemTemplate>
<asp:CheckBoxList ID="chb1" runat="server">
</ItemTemplate>
protected void GvRowDataBound(object sender, GridViewRowEventArgs e)
{
var chb = (CheckBox) e.Row.FindControl("chb1");
var ischeck = false;
if(chb != null)
{
if(chb.Checked)
{
ischeck = true;
}
}
}
答案 3 :(得分:0)
您可以使用FindControl
上的GridViewItem
,然后按照ItemTemplate
定义中的复选框ID进行搜索。
在FindControl GridView上有很多例子
例如检查一下:checkBox in gridView