控制复选框在ASP.NET
问题描述:
一个GridView行内
不是真的知道如何处理这个问题,但在这里不用...控制复选框在ASP.NET
我有两个复选框中每一列的gridview的,下面是该项目模板的示例:
<ItemTemplate>
<asp:CheckBox ID="MasterCheckbox" runat="server"/>
<asp:CheckBox ID="ChildCheckbox" runat="server" />
</ItemTemplate>
我想ChildCheckbox的“启用”属性由MasterCheckbox的“选中”属性...所以换句话说,当MasterCheckbox已检查ChildCheckbox时,才会启用控制。
我知道我需要在MasterCheckbox控件上附加一个处理程序来调用一些JavaScript来在客户端执行必要的操作 - 这可能会在row_databound()方法中完成?
我不能完全弄清楚所需的JavaScript,所以任何提示/技巧将受到欢迎。
感谢
达尔
答
首先你不需要回答你自己的问题,你可以添加注释到您的第一个问题。
由于您使用的是GridView,我认为您是为MasterCheckBox绑定东西的, 因此我们假设它是dataTable中的布尔值。 例如,它与名称行contaning列IsMasterChecked
您可以处理启用另一个具有约束力的自定义表达式作为
<ItemTemplate>
<asp:CheckBox ID="MasterCheckbox" runat="server" />
<asp:CheckBox ID="ChildCheckbox" runat="server" Enabled='<%# Convert.ToBoolean(Eval("IsMasterChecked")) %>'/>
</ItemTemplate>
或
<ItemTemplate>
<asp:CheckBox ID="MasterCheckbox" runat="server" />
<asp:CheckBox ID="ChildCheckbox" runat="server" Enabled='<%# Convert.ToBoolean(Eval("IsMasterChecked")) ? "true" : "false" %>'/>
</ItemTemplate>
希望这有助于。
答
关闭我的头顶,我认为你必须做的是沿着以下线的东西是什么?
<asp:TemplateField HeaderText="Checkbox">
<ItemTemplate>
<asp:CheckBox ID="MasterCheckbox" runat="server" AutoPostBack="true" OnCheckedChanged="checkGridViewChkBox" />
</ItemTemplate>
</asp:TemplateField>
随着后面的下面的代码。
CheckBox MasterCheckbox;
CheckBox ChildCheckbox;
private void checkGridViewChkBox()
{
int i;
int x = GridView1.Rows.Count;
for (i = 0; i < x; i++) //loop through rows
{
findControls(i);
if (MasterCheckbox.Checked)
{
ChildCheckbox.Enabled = true;
}else{
ChildCheckbox.Enabled = false;
}
}
}
private void findControls(int i)
{
MasterCheckbox = (CheckBox)(GridView1.Rows[i].FindControl("MasterCheckbox"));
ChildCheckbox = (CheckBox)(GridView1.Rows[i].FindControl("ChildCheckbox"));
}
这不是非常有效,但工作正常。
谢谢玛拉 - 这应该做到这一点......即使您添加评论,帖子是否会向顶端移动?助教。 – Dal 2009-10-06 13:01:31
主要投票的帖子去顶:) – Myra 2009-10-06 13:13:24