【问题标题】:ASP.NET, VB: checking which items of a CheckBoxList are selectedASP.NET,VB:检查 CheckBoxList 的哪些项目被选中
【发布时间】:2011-06-05 12:00:20
【问题描述】:

我知道这是一个非常基本的问题,但我找不到如何在 VB 中执行此操作...我有一个 CheckBoxList,其中一个选项包括一个用于填写您自己的值的文本框。因此,当检查其复选框时这是后面的代码,我不确定在 If 语句中放入什么来测试是否检查了某个 ListItem。

Protected Sub CheckBoxList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBoxList1.SelectedIndexChanged
    If ___ Then
        txtelect.Enabled = True
    Else
        txtelect.Enabled = False
    End If
End Sub

【问题讨论】:

  • 你能给我们看看 CheckBoxList 和 Textbox 的 aspx 标记吗?

标签: asp.net vb.net selecteditem checkboxlist listitem


【解决方案1】:

将它们放在字符串中的功能

Function ValueSelected(cbl As CheckBoxList, separator As String) As String
    Dim s As String = ""
    Dim cb As ListItem
    For Each cb In cbl.Items
        If cb.Selected Then
            s += cb.Text & separator
        end If
    Next
    s = s.Substring(0, s.Length - 1)
    Return s
End Function

【讨论】:

    【解决方案2】:

    我不会这样做,它非常低效。您访问服务器只是为了启用或禁用文本框,您应该使用 javascript。下面的代码会更好

     <asp:DataList ID="mylist" runat="server">
            <ItemTemplate>
                <input type="checkbox" id="chk<%#Container.ItemIndex %>" onclick="document.getElementById('txt<%#Container.ItemIndex %>').disabled=(!this.checked);" />
                <input type="text" id="txt<%#Container.ItemIndex %>" disabled="disabled" />
            </ItemTemplate>
        </asp:DataList>
    

    【讨论】:

      【解决方案3】:

      假设您的 aspx 看起来与此类似:

          <asp:TextBox ID="txtelect" runat="server"></asp:TextBox>
          <asp:CheckBoxList id="CheckBoxList1" runat="server" autopostback="true" >
              <asp:ListItem  Text="enable TextBox" Value="0" Selected="True"></asp:ListItem>
              <asp:ListItem  Text="1" Value="1" ></asp:ListItem>
              <asp:ListItem  Text="2" Value="2" ></asp:ListItem>
              <asp:ListItem  Text="3" Value="3" ></asp:ListItem>
          </asp:CheckBoxList>
      

      您可以使用 ListItem 的-Selected 属性来检查您的文本框是否应该启用:

        Private Sub CheckBoxList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBoxList1.SelectedIndexChanged
              'use the index of the ListItem where the user can enable the TextBox(starts with 0)'
               txtelect.Enabled = CheckBoxList1.Items( 0 ).Selected
        End Sub
      

      【讨论】:

        【解决方案4】:

        您可以遍历 CheckBoxList 中的复选框,检查每个复选框以查看它是否被选中。试试这样的:

        For Each li As ListItem In CheckBoxList1.Items
            If li.Value = "ValueOfInterest" Then
                'Ok, this is the CheckBox we care about to determine if the TextBox should be enabled... is the CheckBox checked?
                If li.Selected Then
                    'Yes, it is! Enable TextBox
                    MyTextBox.Enabled = True
                Else
                    'It is not checked, disable TextBox
                    MyTextBox.Enabled = False
                End If
            End If
        Next
        

        以上代码将被放置在 CheckBoxList 的 SelectedIndexChanged 事件处理程序中。

        【讨论】:

          猜你喜欢
          • 2011-10-02
          • 1970-01-01
          • 2017-08-04
          • 2023-04-04
          • 1970-01-01
          • 2016-10-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多