带有复选框的Gridview - 当选中某个复选框时,使按钮处于非活动状态

时间:2012-01-18 18:04:48

标签: c# asp.net webforms

我有一个Gridview绑定了SQL表中的一些数据。在GV的第一列,我有CheckBoxes。是否可以根据选中的复选框启用/禁用按钮?

为了更好地理解,这是一个例子;

在GV中,我们有第一列cbox,第二列是ID,第三列是Category。

<asp:GridView ID="MyGV" runat="server" AutoGenerateColumns="False" DataKeyNames="ID">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="MyCBox" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
        <asp:BoundField DataField="category" HeaderText="Category" SortExpression="category" />
    </Columns>
</asp:GridView>

我们有两个按钮(Btn1和Btn2)

<asp:Button ID="Btn1" runat="server" Text="btn1" OnClick="Btn1_Click" />
<asp:Button ID="Btn2" runat="server" Text="btn2" OnClick="Btn2_Click" />

现在......让我们说我们有两个类别(Cat1和Cat2)。当我们选中一个复选框并且该行的类别值为Cat1时,我们启用了Btn1​​并禁用了Btn2;

Btn1.Enabled = true;
Btn2.Enabled = false;

可以这样做吗?怎么样?

2 个答案:

答案 0 :(得分:2)

假设您只有两个类别

,请尝试此操作
<asp:GridView ID="MyGV" runat="server" AutoGenerateColumns="False" DataKeyNames="ID">
<Columns>
    <asp:TemplateField>
        <ItemTemplate>
             <asp:CheckBox ID="MyCBox" Text="Select Cat" AutoPostBack="true" ToolTip='<%#Bind("category") %>' OnCheckedChanged="MyCBox_CheckedChanged" runat="server" />
        </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
    <asp:BoundField DataField="category" HeaderText="Category" SortExpression="category" />
</Columns>

复选框的代码隐藏事件

protected void MyCBox_CheckedChanged(object sender, EventArgs e)
{
    if( ((CheckBox)sender).ToolTip == "cat1"
      { 
       Btn1.Enabled = true;
       Btn2.Enabled = false;
      }
    else 
      { 
       Btn1.Enabled = false;
       Btn2.Enabled = true;
      }          

}

答案 1 :(得分:0)

按钮是网格的一部分吗?