我知道这是一个非常基本的问题,但我找不到如何在VB中执行此操作...我有一个CheckBoxList,其中一个选项包含一个文本框来填充您自己的值。因此,当我的复选框(CheckBoxList中的ListItem)被选中时,我需要启用该文本框。这是后面的代码,我不知道在我的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
答案 0 :(得分:8)
您可以遍历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
事件处理程序中。
答案 1 :(得分:0)
假设你的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
答案 2 :(得分:0)
我不这样做,效率很低。您只是为了启用或禁用文本框而点击服务器,您应该使用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 :(得分:0)
使用字符串获取它们的功能
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