C# WEB自定义控件学习心得(一)
2008-07-27 20:37
155 查看
这次有时间看了一下网上(http://www.cnblogs.com/Clingingboy/archive/2006/07/30/463471.html)的贴子,在此向其表示敬意!
文章标题是心得,其实未见得是什么重要的问题,呵呵,本人技术水平低,记下的也有可能是最基本的东西。不管怎么说,以备以后用到(不灵光的大脑)
1。关于RENDER方法中,作者推荐(很多人都这样说)用标记法
------------------------------
(1)AddStyleAttribute方法为标签添加样式属性
(2)AddAttribute方法为标签添加属性
(3)RenderBeginTag开始写入标签头如<table....>
(4)RenderEndTag写入标签尾部,如</table>
----------------------------
输出控件,而不用HTML。其实就个人感觉来说,本人认为用HTML可能会更好一些,更直观一些。当然首先书写要符合一个规则,不要乱七八糟(呵呵,在说我自己)
2。关于视图状态中的三元符
以前对于三元符的功能很模糊,有时明白,有时又不明白,其实很简单的。特别是进行判断时很有用。这次记下来:(以下是在网上找的)
C#中只提供一种三元运算符"?:",这个运算符根据"?"左边的表达式的值来确定返回结果.
具体使用方式如下:
boolb=a>b?true:false;
intb=a>b?10:20;
stringb=a>b?"真":"假";
下面是一个小范例:Class3.cs
-----------------------------------------------------------------
文章标题是心得,其实未见得是什么重要的问题,呵呵,本人技术水平低,记下的也有可能是最基本的东西。不管怎么说,以备以后用到(不灵光的大脑)
1。关于RENDER方法中,作者推荐(很多人都这样说)用标记法
------------------------------
(1)AddStyleAttribute方法为标签添加样式属性
(2)AddAttribute方法为标签添加属性
(3)RenderBeginTag开始写入标签头如<table....>
(4)RenderEndTag写入标签尾部,如</table>
----------------------------
输出控件,而不用HTML。其实就个人感觉来说,本人认为用HTML可能会更好一些,更直观一些。当然首先书写要符合一个规则,不要乱七八糟(呵呵,在说我自己)
2。关于视图状态中的三元符
以前对于三元符的功能很模糊,有时明白,有时又不明白,其实很简单的。特别是进行判断时很有用。这次记下来:(以下是在网上找的)
C#中只提供一种三元运算符"?:",这个运算符根据"?"左边的表达式的值来确定返回结果.
具体使用方式如下:
boolb=a>b?true:false;
intb=a>b?10:20;
stringb=a>b?"真":"假";
下面是一个小范例:Class3.cs
-----------------------------------------------------------------
usingSystem; namespacename1{ classClass3{ publicstaticvoidMain(){ inta=10; intb=20; inte=a>b?30:40; boolt=a>b?true:false; strings=a>b?"真":"假"; Console.WriteLine("e的值是:{0}",e); Console.WriteLine("t的值是:{0}",t); Console.WriteLine("s的值是:{0}",s); Console.ReadLine(); } } [code]---------------------------------------------------
3.事件回发
IPostBackEventHandler接口专门定义了处理回发事件的方法,说白了就是onclick事件,如果自定义控件需要处理回发事件,你就需要继承IPostBackEventHandler接口,然后实现接口的RaisePostBackEvent方法,另外一个简单的方法就是直接继承Button控件就可以了. RaisePostBackEvent方法用于处理窗体发送给服务器时引发的事件,方法中有一个参数eventArgument表示要传递到事件处理程序的可选事件参数的String 下面总结处理回发事件,必须要做的步骤 (1)继承并实现IPostBackEventHandler接口的[b]RaisePostBackEvent方法 (2)为表单元素定义UniqueID,以与IPostBackEventHandler服务器控件的UniqueID相对应[/b]
4。数据回发
要实现Change这样的数据回发事件,就要继承IPostBackDataHandler接口.看看MSDN对此接口的定义 IPostBackDataHandler接口 定义ASP.NET服务器控件为自动加载回发数据而必须实现的方法。 LoadPostData方法根据服务器控件的状态由于回发而发生更改做出判断是否调用RaisePostDataChangedEvent方法,返回true则调用(就是旧值和新值不同的时候) RaisePostDataChangedEvent方法用于引发任何更改事件 postDataKey表示控件内部数据的关键值,postCollection表示所有传入名称值的集合,其采用索引的方式来访问 ------------------------IPostBackEventHandler接口和IPostBackDataHandler接口. 想到Button按钮就要想到IPostBackEventHandler接口,想要textbox,dropdownlist一些change事件则要想到IPostBackDataHandler接口
-------------------------------------------------------------------
今天学习数据回发的例子弄了一小天(唉,自己比较笨)
教程里讲的例子,只说明了如何处理回发事件。什么接口了什么的。但是当我把程序做完发现,事件根本不执行。无奈在网上搜来搜去:发现根本没有进行回发的操作。
只好又找如何让页面回发。见下面的方法:
CheckBox,TextBox,RadioButton,ListControl及其派生类等
这些Control输出的Html元素都没有自动submit的能力,所以这些Control普通情况下是不会引发回传的,但是为了方便用户,.netFramework在上面暴露了一个属性叫AutoPostBack,
一旦这个属性为true,就表示这些Control具备了引发回传的能力,具体怎么实现回传呢,还是依赖于上面介绍的两段脚本。
当AutoPostBack为true,CauseValidation为true的时候就注册WebForm_DoPostBackWithOptions.当AutoPostBack为true,CasuseValidataion为false的时候就注册__doPostBack函数,
同时在AutoPostBack属性为true的时候,为了防止性能问题,一般注册的脚本都用setTimeout(函数名,0)包起来,
这样可以认为是一个模拟的异步调用(事实JavaScript是单线程的,这样的调用会自动进入调用队列,等待执行,不会阻塞现在的调用)。
另外:在输入回发脚本时,必须给控件指明HTML标记NAME,否则可以回发,但不会执行处理事件。
相关文章推荐
- 学习心得
- Angular2学习心得
- JSP学习心得,干
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理) - 转贴自 wolfenstein (NeverSayNever)
- RHCE心得——IPTABLES学习心得
- OpenLayers3 学习心得(六)——WMS服务
- vue学习心得
- Unicode与国际化软件开发学习心得
- 2018.3.1学习心得
- Surf算法学习心得(三)——OpenCV:SURF算法浅析
- 在老男孩学习心得
- 学习跨线程访问UI控件心得。。
- Windows Server 2003 一天之初步学习心得
- ROR ! 一些学习心得
- 学习心得
- 软件工程学习心得(一)
- 从今天开始,有空就写写自己学习android心得。
- 数据库学习及心得体会
- c++学习心得(二)
- 前端学习心得-javascript设计模式与开发实践-高阶函数