【问题标题】:After 2 checkboxes i selected disable the rest在 2 个复选框后,我选择禁用其余复选框
【发布时间】:2021-11-20 00:14:40
【问题描述】:

我是 asp.net 的新手... 我有一个带有 6 个复选框的复选框列表 当我选择 2 时,我不会禁用另一个,如果未选中 1,我希望再次启用所有功能

这是我在 aspx 中的代码

    <asp:CheckBoxList ID="CheckBoxList1" runat="server" TabStop="false" CellPadding="5" CellSpacing="10" Width="420px" onclick="javascript:CheckCheck();" Font-Size="X-Large">
            <asp:ListItem Text="Texas NL 10/10" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
            <asp:ListItem Text="Texas NL 25/25" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
           <asp:ListItem Text="Texas 50/50" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
           <asp:ListItem Text="Omaha PL 10/10" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
           <asp:ListItem Text="Omaha PL 25/25" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
           <asp:ListItem Text="Omaha PL 50/50" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
    </asp:CheckBoxList>

请帮忙

【问题讨论】:

  • 你有什么尝试?

标签: asp.net checkboxlist


【解决方案1】:

哼,好可爱的小问题!

您可以删除客户端点击,设置 autopostback = true,然后使用此代码:

Protected Sub CheckBoxList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CheckBoxList1.SelectedIndexChanged

    ' count number checked.

    Dim CheckCount As Integer

    For Each MyCheck As ListItem In CheckBoxList1.Items
        If MyCheck.Selected Then
            CheckCount += 1
        End If
    Next

    If CheckCount = 2 Then
        ' disable all boxes except those checked
        For Each MyCheck As ListItem In CheckBoxList1.Items
            If Not MyCheck.Selected Then
                MyCheck.Enabled = False
            End If
        Next
    End If

    If CheckCount < 2 Then
        ' enable all check boxes
        For Each MyCheck As ListItem In CheckBoxList1.Items
            MyCheck.Enabled = True
        Next

    End If

End Sub

编辑:

邮政编码有效。

我的标记是这样的:

<asp:CheckBoxList ID="CheckBoxList1" runat="server" TabStop="false" CellPadding="5" 
    CellSpacing="10" Width="420px"  Font-Size="X-Large"
    AutoPostBack="true"
    >
        <asp:ListItem Text="Texas NL 10/10" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
        <asp:ListItem Text="Texas NL 25/25" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
       <asp:ListItem Text="Texas 50/50" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
       <asp:ListItem Text="Omaha PL 10/10" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
       <asp:ListItem Text="Omaha PL 25/25" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
       <asp:ListItem Text="Omaha PL 50/50" Value="" TabStop="false" TabIndex="-1"></asp:ListItem>
</asp:CheckBoxList>

所以我们右键单击复选框列表,显示复选框列表的属性,单击事件的闪电, 我们有这个:

现在我们有了代码存根,代码如下:

Protected Sub CheckBoxList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CheckBoxList1.SelectedIndexChanged

    ' count number checked.

    Dim CheckCount As Integer

    For Each MyCheck As ListItem In CheckBoxList1.Items
        If MyCheck.Selected Then
            CheckCount += 1
        End If
    Next

    If CheckCount = 2 Then
        ' disable all boxes except those checked
        For Each MyCheck As ListItem In CheckBoxList1.Items
            If Not MyCheck.Selected Then
                MyCheck.Enabled = False
            End If
        Next
    End If

    If CheckCount < 2 Then
        ' enable all check boxes
        For Each MyCheck As ListItem In CheckBoxList1.Items
            MyCheck.Enabled = True
        Next

    End If

End Sub

您不必输入受保护的子 - VS 会为您创建并创建它。

我建议您创建空白的新测试网页 - 并尝试上述方法。

这是一个已发布的工作代码解决方案。

编辑2:

所以海报使用的是 c# - 所以我们需要用 c# 编写这段代码,而不是 vb.net。

此代码将作为 c# 工作:

    protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        // count number checked.
        int CheckCount = 0;

        foreach (ListItem MyCheck in CheckBoxList1.Items)
        {
            if (MyCheck.Selected)
                CheckCount++;
        }

        if (CheckCount == 2)
        {
            // disable all boxes except those checked
            foreach (ListItem MyCheck in CheckBoxList1.Items)
                if (!MyCheck.Selected)
                    MyCheck.Enabled = false;
        }

        if (CheckCount < 2)
        {
            foreach (ListItem MyCheck in CheckBoxList1.Items)
                MyCheck.Enabled = true;
        }
    }

【讨论】:

  • 它不喜欢受保护的子 得到很多带下划线的错误
  • 查看我的编辑。您必须先学习如何使用 Visual Studio - 尝试上述步骤
  • 如果我像你显示的那样添加它,我会得到这个受保护的 void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) { }
  • 对,但您不必输入受保护的 void - VS 会为您完成。因此,在该存根中输入 vb 代码,它现在就可以工作了。悬停,您的代码存根看起来是 c# 而不是 vb.net 您没有将您的帖子标记为使用 c#,所以我使用了 vb.net。所以VS应该为你创建代码存根——你不用输入那个部分,而只输入代码存根中的上述代码。所以,我将发布一个 c# 代码版本。下次,标记您的帖子 - 我们无法知道或猜测您使用的是 c# 还是 vb.net。我的示例代码是 vb.net - 我将在接下来的几分钟内发布 c# 工作代码。
  • 好的,请参阅我的帖子 Edit #2 - 我发布了一个可用的 c# 版本。如前所述,将来,请确保将您的问题标记为 vb.net 或 c#。 (如果您不关心并且能够使用任何一种语言,也可以忽略它)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 2020-10-21
  • 2022-10-13
相关资源
最近更新 更多