前面发了文本框和下拉列表框的,这回发一个CheckBoxList。不知道中文名字该叫什么。
CheckBoxList 最郁闷的地方就是:明明可以选择多个选项,但是 SelectedValue 只能得到第一个选项,其他被选中的还得另想办法。
不知道vs2005 有没有改进,至少 vs2003 是这样的。
Public Function GetSelectedValue() As String
Dim item As ListItem
Dim tmpStr As String = ""
For Each item In Me.Items
If item.Selected Then
tmpStr &= item.Value & ","
End If
Next
tmpStr = tmpStr.TrimEnd(",")
Return tmpStr
End Function
Dim item As ListItem
Dim tmpStr As String = ""
For Each item In Me.Items
If item.Selected Then
tmpStr &= item.Value & ","
End If
Next
tmpStr = tmpStr.TrimEnd(",")
Return tmpStr
End Function
于是呢加了这个函数GetSelectedValue 来获取所有的选中的项的Value 值,用 “,”来分隔。
对应的还有
GetSelectedText //获取 所有的选中的项的Text 值
SetSelectedByValue //通过 Value 设置 选项
SetSelectedByText //通过 Text 设置 选项
Public Sub SetSelectedByValue(ByVal listValues As String)
Me.SelectedIndex = -1
If (listValues = "True") Then
listValues = "1"
End If
If (listValues = "False") Then
listValues = "0"
End If
Dim item As ListItem
Dim i As Int32 = 0
Dim tmpStr() As String = listValues.Split(",")
For Each item In Me.Items
For i = 0 To tmpStr.Length - 1
If (item.Value.Equals(tmpStr(i))) Then
item.Selected = True
End If
Next
Next
End Sub
Me.SelectedIndex = -1
If (listValues = "True") Then
listValues = "1"
End If
If (listValues = "False") Then
listValues = "0"
End If
Dim item As ListItem
Dim i As Int32 = 0
Dim tmpStr() As String = listValues.Split(",")
For Each item In Me.Items
For i = 0 To tmpStr.Length - 1
If (item.Value.Equals(tmpStr(i))) Then
item.Selected = True
End If
Next
Next
End Sub
其他的地方就和 下拉列表框基本一致了,可以看看 第二步:下拉列表框
我就不重复写了,感兴趣的话看看下面的代码。
Imports System.ComponentModel
Imports System.Web.UI
Imports HBS
Imports System
Imports System.Web.UI.WebControls
Imports System.Data
<ToolboxData("<{0}:HBSCheckBoxList runat=server></{0}:HBSCheckBoxList>")> _
Public Class HBSCheckBoxList
Inherits System.Web.UI.WebControls.CheckBoxList
Implements IGetControlValue
实现接口
初始化 OnInit。设置CssClass、DataValueField、DataTextField、
'根据传入的ID设置下拉列表框的默认选项,如果没有找到,不选择,不抛出异常。
'<param name="listValue">ID值,多个话用 | 分隔</param>
函数实现 setSelectedByValue
' 根据传入的文本内容设置下拉列表框的默认选项,如果没有找到,选第一项,不抛出异常。
' <param name="listValue">文本内容</param>
函数实现 SetSelectedByText
'返回选择的ID值,用 , 分隔
函数实现 GetSelectedValue
'返回选择的Text值,用 , 分隔
函数实现 GetSelectedText
Imports System.Web.UI
Imports HBS
Imports System
Imports System.Web.UI.WebControls
Imports System.Data
<ToolboxData("<{0}:HBSCheckBoxList runat=server></{0}:HBSCheckBoxList>")> _
Public Class HBSCheckBoxList
Inherits System.Web.UI.WebControls.CheckBoxList
Implements IGetControlValue
实现接口
初始化 OnInit。设置CssClass、DataValueField、DataTextField、
'根据传入的ID设置下拉列表框的默认选项,如果没有找到,不选择,不抛出异常。
'<param name="listValue">ID值,多个话用 | 分隔</param>
函数实现 setSelectedByValue
' 根据传入的文本内容设置下拉列表框的默认选项,如果没有找到,选第一项,不抛出异常。
' <param name="listValue">文本内容</param>
函数实现 SetSelectedByText
'返回选择的ID值,用 , 分隔
函数实现 GetSelectedValue
'返回选择的Text值,用 , 分隔
函数实现 GetSelectedText