[自定义服务器控件] 第二步:下拉列表框。
2008-02-26 20:33
211 查看
前面发了一个文本框的,这回发一个下拉列表框。
一般在写自定义控件之前都要考虑一下原来的控件(系统代的)有什么优缺点,有哪些功能是我想要的,但是自带的控件没有提供,或者提供的不是太理想。
那么对于 下拉列表框 我个人感觉有几个地方用着不是太方便。
1、绑定数据库。
当下拉列表框里的数据需要从数据库里提取的时候,就需要设置DataValueField 和 DataTextField 的属性,每次用的时候都要设置一下,这个比较烦。
(不好意思,我比较懒)
我的方法是在自定义控件的OnInit 时间里面加上
Me.CssClass = "lst"
Me.DataValueField = "ID"
Me.DataTextField = "txt"
Me.Font.Size = FontUnit.Point(9)
这就方便多了,只是在写SQL语句的时候需要使用别名的方式,修改字段的名称,以便适应 ID和txt。
如果您不喜欢这种方式的话,可以略过。:)
2、设置选定的选项。
在修改数据的时候,往往需要根据已经保存的数据来设置下拉列表框的第几个选项是被选中的,以便于修改。(不知道我有没有说清楚,表达能力还有待提高。)
当然系统的下拉列表框提供了这个功能,
Me.Items.FindByText("125").Selected = True
Me.SelectedValue = "125";
其他方法略。
可以用这种几方法来设置,但是这里有一个共同小问题,就是当下拉列表框的item里面没有“125” 的时候会抛出异常。
对于框架来说这么做没有什么问题,但是对于客户就不好了。
当然这个是可以避免的,一是检查是否出现异常,要不就是确保数据是完整的,绝对不会出现这种在item里面找不到值的情况。
但是我比较懒,不像写太多的代码来预防这些事情。
我写了一个 SetSelectedByValue (ByVal listValue As String) 的方法来设置,这样就方便多了。
3、添加月份、日期等信息。
如果需要写一个下拉列表框,这个框里面要放置12个月份,还要写个循环或者在.aspx里面设置。我设了一个偷懒的方法。
4、其他的常用的填充方法。
您可以把您常用的填充的数据放在自定义控件里面,调用的时候就会方便很多。
5、验证。
这个和 文本框是一样的,也是使用正则的方式来验证。这里主要验证是否选择了一个选项。
比如:第一个item是“请选择”,而这个下拉列表框又必须有一个选项(当然不能选第一个了),这个时候就需要验证一下。
6、实现接口
和文本框一样实现了下面的几个接口
属性(接口):
ControlKind 返回控件的类型。
函数(接口):
GetValue() 获取文本框的值,默认返回 TextTrim
GetValue(ByVal kind As String) 根据 kind 获取对应的文本框的值。
SetValue(ByVal value As String) 给文本框赋值
SetValue(ByVal value As String, ByVal kind As String)给文本框赋值
好像有点乱,感兴趣的话看看下面的代码吧。
<DefaultProperty("Text"), ToolboxData("<{0}:HBSDropDownList runat=server></{0}:HBSDropDownList>")> _
一般在写自定义控件之前都要考虑一下原来的控件(系统代的)有什么优缺点,有哪些功能是我想要的,但是自带的控件没有提供,或者提供的不是太理想。
那么对于 下拉列表框 我个人感觉有几个地方用着不是太方便。
1、绑定数据库。
当下拉列表框里的数据需要从数据库里提取的时候,就需要设置DataValueField 和 DataTextField 的属性,每次用的时候都要设置一下,这个比较烦。
(不好意思,我比较懒)
我的方法是在自定义控件的OnInit 时间里面加上
Me.CssClass = "lst"
Me.DataValueField = "ID"
Me.DataTextField = "txt"
Me.Font.Size = FontUnit.Point(9)
这就方便多了,只是在写SQL语句的时候需要使用别名的方式,修改字段的名称,以便适应 ID和txt。
如果您不喜欢这种方式的话,可以略过。:)
2、设置选定的选项。
在修改数据的时候,往往需要根据已经保存的数据来设置下拉列表框的第几个选项是被选中的,以便于修改。(不知道我有没有说清楚,表达能力还有待提高。)
当然系统的下拉列表框提供了这个功能,
Me.Items.FindByText("125").Selected = True
Me.SelectedValue = "125";
其他方法略。
可以用这种几方法来设置,但是这里有一个共同小问题,就是当下拉列表框的item里面没有“125” 的时候会抛出异常。
对于框架来说这么做没有什么问题,但是对于客户就不好了。
当然这个是可以避免的,一是检查是否出现异常,要不就是确保数据是完整的,绝对不会出现这种在item里面找不到值的情况。
但是我比较懒,不像写太多的代码来预防这些事情。
我写了一个 SetSelectedByValue (ByVal listValue As String) 的方法来设置,这样就方便多了。
3、添加月份、日期等信息。
如果需要写一个下拉列表框,这个框里面要放置12个月份,还要写个循环或者在.aspx里面设置。我设了一个偷懒的方法。
4、其他的常用的填充方法。
您可以把您常用的填充的数据放在自定义控件里面,调用的时候就会方便很多。
5、验证。
这个和 文本框是一样的,也是使用正则的方式来验证。这里主要验证是否选择了一个选项。
比如:第一个item是“请选择”,而这个下拉列表框又必须有一个选项(当然不能选第一个了),这个时候就需要验证一下。
6、实现接口
和文本框一样实现了下面的几个接口
属性(接口):
ControlKind 返回控件的类型。
函数(接口):
GetValue() 获取文本框的值,默认返回 TextTrim
GetValue(ByVal kind As String) 根据 kind 获取对应的文本框的值。
SetValue(ByVal value As String) 给文本框赋值
SetValue(ByVal value As String, ByVal kind As String)给文本框赋值
好像有点乱,感兴趣的话看看下面的代码吧。
<DefaultProperty("Text"), ToolboxData("<{0}:HBSDropDownList runat=server></{0}:HBSDropDownList>")> _
相关文章推荐
- [自定义服务器控件] 第二步:下拉列表框。
- Android 如何打造Android自定义的下拉列表框控件
- ASP.NET自定义Web服务器控件-DropDownList/Select下拉列表控件
- Android 自定义View修炼-如何打造Android自定义的下拉列表框控件
- Android Android自定义的下拉列表框控件
- 最简单的方法在DataGrid中自定义样式列(通过继承可以在Datagrid中使用下拉列表框,日期控件等)
- Qt学习五:控件二:下拉列表框、字体下拉列表框、QSpinBox控件、QScrollBar控件
- C# GridView 控件绑定下拉列表框及给下拉列表框设定默认值
- 多功能下拉框服务器控件开发
- ASP.NET2.0服务器控件之自定义状态管理
- SDI在自定义的工具栏上添加下拉控件
- 自定义服务器控件之CButton(一)
- [自定义服务器控件] 第一步:文本框。
- 自定义服务器控件的元数据属性
- android自定义Spinner下拉菜单和AutoCompleteTextView自动显示的(下拉列表框)样式
- DatePicker(日期选择自定义服务器控件)的实现
- ASP.NET - 如何:使用自定义函数对 ASP.NET 服务器控件进行验证
- 自定义服务器控件开发之1:重写的支持多验证TextBox控件
- [原创]自定义分页控件(dll服务器控件)代码学习与探讨!
- Select控件实现联动下拉列表框效果