代码改变世界

[自定义服务器控件] 第三步:CheckBoxList。

2008-02-26 20:32  金色海洋(jyk)  阅读(1930)  评论(7编辑  收藏
前面发了文本框下拉列表框的,这回发一个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

于是呢加了这个函数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


其他的地方就和 下拉列表框基本一致了,可以看看 第二步:下拉列表框

我就不重复写了,感兴趣的话看看下面的代码。

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

2