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
' 传入查询语句,绑定下拉列表框。正确执行返回空字符串,不正确返回错误信息
' <param name="sqlString">查询语句</param>
' <returns>正确执行返回空字符串,不正确返回错误信息</returns>
函数实现 bindList
函数实现 bindList
' 传入查询语句,绑定下拉列表框。正确执行返回空字符串,不正确返回错误信息
' <param name="sqlString">查询语句</param>
' <returns>正确执行返回空字符串,不正确返回错误信息</returns>
函数实现 bindList
' 添加日期。给下拉列表框填充从 1 到 lastDay 的数据。value 和 text 值一致。
' <param name="lastDay">最后一天</param>
' <param name="isAddDefaultItem">是否添加 “请选择”</param>
函数实现 ItemAddDate
' 添加月份。给下拉列表框填充从 1 到 12 的数据。value 和 text 值一致。
' <returns></returns>
函数实现 ItemAddMonth
' 用两个字符串来添加选项。
' <param name="texts">显示的内容,用的字符串,用“~”分开。</param>
' <param name="values">value值,用的字符串,用“~”分开。</param>
函数实现 AddItemByString
' 用一个字符串来添加选项。value在前,Text在后
' <param name="texts">显示的内容,用的字符串,用“~”分开。</param>
函数实现 AddItemByString
' 用两个数组来添加选项。
' <param name="texts">显示的内容。</param>
' <param name="values">value值。</param>
函数实现 AddItemByArray
' 用一个数组来添加选项。values在前,Text在后
' <param name="texts">显示的内容,用的字符串,用“~”分开。</param>
' <returns></returns>
函数实现 AddItemByArray
函数实现 AddItemByArrayTwo
End Class
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
' 传入查询语句,绑定下拉列表框。正确执行返回空字符串,不正确返回错误信息
' <param name="sqlString">查询语句</param>
' <returns>正确执行返回空字符串,不正确返回错误信息</returns>
函数实现 bindList
函数实现 bindList
' 传入查询语句,绑定下拉列表框。正确执行返回空字符串,不正确返回错误信息
' <param name="sqlString">查询语句</param>
' <returns>正确执行返回空字符串,不正确返回错误信息</returns>
函数实现 bindList
' 添加日期。给下拉列表框填充从 1 到 lastDay 的数据。value 和 text 值一致。
' <param name="lastDay">最后一天</param>
' <param name="isAddDefaultItem">是否添加 “请选择”</param>
函数实现 ItemAddDate
' 添加月份。给下拉列表框填充从 1 到 12 的数据。value 和 text 值一致。
' <returns></returns>
函数实现 ItemAddMonth
' 用两个字符串来添加选项。
' <param name="texts">显示的内容,用的字符串,用“~”分开。</param>
' <param name="values">value值,用的字符串,用“~”分开。</param>
函数实现 AddItemByString
' 用一个字符串来添加选项。value在前,Text在后
' <param name="texts">显示的内容,用的字符串,用“~”分开。</param>
函数实现 AddItemByString
' 用两个数组来添加选项。
' <param name="texts">显示的内容。</param>
' <param name="values">value值。</param>
函数实现 AddItemByArray
' 用一个数组来添加选项。values在前,Text在后
' <param name="texts">显示的内容,用的字符串,用“~”分开。</param>
' <returns></returns>
函数实现 AddItemByArray
函数实现 AddItemByArrayTwo
End Class