好久没发帖子了,又加了不少的功能呀。(图片仅是测试,不代表什么表情。)
本来我也想写一个2007的总结的,但是看到很多人都写了,我就不凑热闹了,写点和代码有关系的吧。
写作原因:
1、在项目里做得最多的操作恐怕就是保存数据了,总是要写一大堆的代码,能不能简单一点呢?2005来了,似乎可以减少一些代码,但是03里怎么办呢?
2、基类、接口、策略模式,好多高手都讨论过了,但是都是理论上的,在实践中如何应用呢?在webform 里面又怎么使用呢?
目的:
1、做一个“控件”来应对各种表单的录入,包括一次保存一条记录、一次保存多条记录。
2、写一下我对基类、接口、策略模式的理解,请各位高手批批。通过对一个实际中的例子的讨论,可以让新同学更好的理解吧。
针对的框架:
目前只考虑 asp.net1.1 (webform)。
先贴个图片,就是这样的表单
[开始了]
1、取值问题
表单里会有很多种控件,每一种控件的取值方法又不太一致,有的叫做 “Text”,有的叫做“SelectedValue”,甚至有的还要自己在写几行代码才行(比如 CheckBoxList)。
那么怎么才能让取值更简单一点呢?我想写一个方法(GetValue)来获取用户输入的数据,而且在取值的时候不必关心是什么控件,一个GetValue,就把值得到了,管它是什么控件呢!
如果用基类的话就要在控件的“共有”基类里面加一个方法,但是这个“共有”的基类也不是太好找,再有呢在.net框架里加点东东好像也不是太容易(或者是我学艺不精)。
我想到的解决方法呢就是使用接口。
先定义一个接口:IGetControlValue
本来我也想写一个2007的总结的,但是看到很多人都写了,我就不凑热闹了,写点和代码有关系的吧。
写作原因:
1、在项目里做得最多的操作恐怕就是保存数据了,总是要写一大堆的代码,能不能简单一点呢?2005来了,似乎可以减少一些代码,但是03里怎么办呢?
2、基类、接口、策略模式,好多高手都讨论过了,但是都是理论上的,在实践中如何应用呢?在webform 里面又怎么使用呢?
目的:
1、做一个“控件”来应对各种表单的录入,包括一次保存一条记录、一次保存多条记录。
2、写一下我对基类、接口、策略模式的理解,请各位高手批批。通过对一个实际中的例子的讨论,可以让新同学更好的理解吧。
针对的框架:
目前只考虑 asp.net1.1 (webform)。
先贴个图片,就是这样的表单
[开始了]
1、取值问题
表单里会有很多种控件,每一种控件的取值方法又不太一致,有的叫做 “Text”,有的叫做“SelectedValue”,甚至有的还要自己在写几行代码才行(比如 CheckBoxList)。
那么怎么才能让取值更简单一点呢?我想写一个方法(GetValue)来获取用户输入的数据,而且在取值的时候不必关心是什么控件,一个GetValue,就把值得到了,管它是什么控件呢!
如果用基类的话就要在控件的“共有”基类里面加一个方法,但是这个“共有”的基类也不是太好找,再有呢在.net框架里加点东东好像也不是太容易(或者是我学艺不精)。
我想到的解决方法呢就是使用接口。
先定义一个接口:IGetControlValue
Public
Interface IGetControlValue
ReadOnly Property ControlKind() As String
Function GetControlValue() As String
End Interface
ReadOnly Property ControlKind() As String
Function GetControlValue() As String
End Interface
然后呢再写几个自定义服务器控件(比如文本控件、下拉列表框了什么的),让他们继承这个接口。
目前我写了五个这样的控件:HBSTextBox 、HBSCheckBox 、HBSCheckBoxList 、HBSDropDownList 、HBSRadioButtonList
他们都继承了IGetControlValue。
控件比较多,我就只贴出 HBSCheckBoxList 的代码吧,其他的都是类似的写法。
<
ToolboxData(
"
<{0}:HBSCheckBoxList runat=server></{0}:HBSCheckBoxList>
"
)
>
_
Public Class HBSCheckBoxList
Inherits System.Web.UI.WebControls.CheckBoxList
Implements IGetControlValue
实现接口
初始化 OnInit。设置CssClass、DataValueField、DataTextField、
'返回选择的ID值,用 , 分隔
Public Class HBSCheckBoxList
Inherits System.Web.UI.WebControls.CheckBoxList
Implements IGetControlValue
实现接口
初始化 OnInit。设置CssClass、DataValueField、DataTextField、
'返回选择的ID值,用 , 分隔