[自定义服务器控件] 第三步:CheckBoxList。
时间:2022-04-27
本文章向大家介绍[自定义服务器控件] 第三步:CheckBoxList。,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前面发了文本框和下拉列表框的,这回发一个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 = -
If (listValues = "True") Then
listValues = ""
End If
If (listValues = "False") Then
listValues = ""
End If
Dim item As ListItem
Dim i As Int32 =
Dim tmpStr() As String = listValues.Split(",")
For Each item In Me.Items
For i = To tmpStr.Length -
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
#Region "实现接口"
<Bindable(True), Category("默认值"), DefaultValue(""), Description("获取控件类别")> _
ReadOnly Property ControlKind() As String Implements IGetControlValue.ControlKind
Get
Return ""
End Get
End Property
Public Function GetValue() As String Implements IGetControlValue.GetControlValue
Return Me.GetSelectedValue
End Function
Public Function GetValue(ByVal kind As String) As String Implements IGetControlValue.GetControlValue
Return ""
End Function
Public Sub SetValue(ByVal value As String) Implements IGetControlValue.SetControlValue
Me.SetSelectedByValue(value)
End Sub
Public Sub SetValue(ByVal value As String, ByVal kind As String) Implements IGetControlValue.SetControlValue
End Sub
#End Region
#Region "初始化 OnInit。设置CssClass、DataValueField、DataTextField、"
Protected Overrides Sub OnInit(ByVal e As EventArgs)
Me.CssClass = "chk"
Me.DataValueField = "ID"
Me.DataTextField = "txt"
Me.Font.Size = FontUnit.Point()
End Sub
#End Region
'根据传入的ID设置下拉列表框的默认选项,如果没有找到,不选择,不抛出异常。
'<param name="listValue">ID值,多个话用 | 分隔</param>
#Region "函数实现 setSelectedByValue"
Public Sub SetSelectedByValue(ByVal listValues As String)
Me.SelectedIndex = -
If (listValues = "True") Then
listValues = ""
End If
If (listValues = "False") Then
listValues = ""
End If
Dim item As ListItem
Dim i As Int32 =
Dim tmpStr() As String = listValues.Split(",")
For Each item In Me.Items
For i = To tmpStr.Length -
If (item.Value.Equals(tmpStr(i))) Then
item.Selected = True
End If
Next
Next
End Sub
#End Region
' 根据传入的文本内容设置下拉列表框的默认选项,如果没有找到,选第一项,不抛出异常。
' <param name="listValue">文本内容</param>
#Region "函数实现 SetSelectedByText"
Public Sub SetSelectedByText(ByVal listTexts As String)
Me.SelectedIndex = -
Dim item As ListItem
Dim tmpStr() As String = listTexts.Split(",")
Dim i As Int32 =
For Each item In Me.Items
For i = To tmpStr.Length -
If item.Text.Equals(tmpStr(i)) Then
item.Selected = True
End If
Next
Next
End Sub
#End Region
'返回选择的ID值,用 , 分隔
#Region "函数实现 GetSelectedValue"
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
#End Region
'返回选择的Text值,用 , 分隔
#Region "函数实现 GetSelectedText"
Public Function GetSelectedText() As String
Dim item As ListItem
Dim tmpStr As String = ""
For Each item In Me.Items
If item.Selected Then
tmpStr &= item.Text & ","
End If
Next
tmpStr = tmpStr.TrimEnd(",")
Return tmpStr
End Function
#End Region
' 传入查询语句,绑定下拉列表框。正确执行返回空字符串,不正确返回错误信息
' <param name="sqlString">查询语句</param>
' <returns>正确执行返回空字符串,不正确返回错误信息</returns>
#Region "函数实现 bindList"
Public Function BindListBySQL(ByVal sqlString As String)
Dim dal = New DataAccessLayer
Me.DataSource = dal.RunSqlDataTable(sqlString)
Me.DataBind()
dal.Dispose()
End Function
#End Region
#Region "函数实现 bindList"
Public Function BindListBySQL(ByVal sqlString As String, ByVal isAddItem As Boolean)
Dim dal = New DataAccessLayer
Me.DataSource = dal.RunSqlDataTable(sqlString)
Me.DataBind()
dal.Dispose()
End Function
#End Region
' 传入查询语句,绑定下拉列表框。正确执行返回空字符串,不正确返回错误信息
' <param name="sqlString">查询语句</param>
' <returns>正确执行返回空字符串,不正确返回错误信息</returns>
#Region "函数实现 bindList"
Public Function BindListByStore(ByVal store As String) As String
Dim dal As New DataAccessLayer
Me.DataSource = dal.RunStoreDataTable(store)
Me.DataBind()
dal.Dispose()
End Function
#End Region
' 添加日期。给下拉列表框填充从 1 到 lastDay 的数据。value 和 text 值一致。
' <param name="lastDay">最后一天</param>
' <param name="isAddDefaultItem">是否添加 “请选择”</param>
#Region "函数实现 ItemAddDate"
Public Sub ItemAddDate(ByVal lastDay As Int32)
Dim i As Int32
For i = To lastDay
Me.Items.Add(New ListItem(i.ToString(), i.ToString()))
Next
End Sub
#End Region
' 添加月份。给下拉列表框填充从 1 到 12 的数据。value 和 text 值一致。
' <returns></returns>
#Region "函数实现 ItemAddMonth"
Public Sub ItemAddMonth()
Dim i As Int32
For i = To
Me.Items.Add(New ListItem(i.ToString(), i.ToString()))
Next
End Sub
#End Region
' 用两个字符串来添加选项。
' <param name="texts">显示的内容,用的字符串,用“~”分开。</param>
' <param name="values">value值,用的字符串,用“~”分开。</param>
#Region "函数实现 AddItemByString"
Public Sub AddItemByString(ByVal values As String, ByVal texts As String)
Dim strText As String() = texts.Split("~")
Dim strValue As String() = values.Split("~")
Dim i As Int32
For i = To strText.Length
Me.Items.Add(New ListItem(strText(i), strValue(i)))
Next
End Sub
#End Region
' 用一个字符串来添加选项。value在前,Text在后
' <param name="texts">显示的内容,用的字符串,用“~”分开。</param>
#Region "函数实现 AddItemByString"
Public Sub AddItemByString(ByVal TextsAndValues As String)
Dim str As String() = TextsAndValues.Split("~")
Dim Len As Int32 = str.Length
Dim i As Int32
For i = To Len -
Me.Items.Add(New ListItem(str(Len + i), str(i)))
Next
End Sub
#End Region
' 用两个数组来添加选项。
' <param name="texts">显示的内容。</param>
' <param name="values">value值。</param>
#Region "函数实现 AddItemByArray"
Public Sub AddItemByArray(ByVal values As String(), ByVal texts As String())
Dim i As Int32
For i = To texts.Length
Me.Items.Add(New ListItem(texts(i), values(i)))
Next
End Sub
#End Region
' 用一个数组来添加选项。values在前,Text在后
' <param name="texts">显示的内容,用的字符串,用“~”分开。</param>
' <returns></returns>
#Region "函数实现 AddItemByArray"
Public Sub AddItemByArray(ByVal ValuesAndTexts As String())
Dim len As Int32 = ValuesAndTexts.Length /
Dim i As Int32
For i = To len
Me.Items.Add(New ListItem(ValuesAndTexts(len + i), ValuesAndTexts(i)))
Next
End Sub
#End Region
#Region "函数实现 AddItemByArrayTwo"
Public Sub AddItemByArrayTwo(ByVal ValuesAndTexts As String(,))
Dim len As Int32 = ValuesAndTexts.Length / -
Dim i As Int32
For i = To len
Me.Items.Add(New ListItem(ValuesAndTexts(i, ), ValuesAndTexts(i, )))
Next
End Sub
#End Region
End Class
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 2万字带你学习Qos原理,还有6个实验案例,建议一定要收藏!
- 最全总结 | 聊聊 Python 数据处理全家桶(MongoDB 篇)
- R函数
- unstack函数应用——生成单细胞marker基因表格
- 手把手教你使用Python打造一个智能搜索淘宝商品,生成操作日志的系统
- leetcode树之将有序数组转换为二叉搜索树
- Mysql必知必会!
- 【一天一大 lee】路径总和 II (难度:中等) - Day20200926
- 【一天一大 lee】从中序与后序遍历序列构造二叉树 (难度:中等)-Day20200925
- 【一天一大 lee】填充每个节点的下一个右侧节点指针 II (难度:中等) - Day20200928
- 【一天一大 lee】 二叉搜索树中的众数 (难度:简单)-Day20200924
- 【一天一大 lee】 合并二叉树 (难度:简单)-Day20200923
- 表达量矩阵分组很复杂也可以使用limma的3大策略
- 一日一技:loguru 如何把不同的日志写入不同的文件中
- 如何迁移SSDB数据到Tendis解决方案