控制复选框在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> 

希望这有助于。

+0

谢谢玛拉 - 这应该做到这一点......即使您添加评论,帖子是否会向顶端移动?助教。 – Dal 2009-10-06 13:01:31

+0

主要投票的帖子去顶:) – Myra 2009-10-06 13:13:24

关闭我的头顶,我认为你必须做的是沿着以下线的东西是什么?

<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")); 
} 

这不是非常有效,但工作正常。