C# WEB自定义控件学习心得(一)

 这次有时间看了一下网上(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#中只提供一种三元运算符"?:",这个运算符根据"?"左边的表达式的值来确定返回结果.

    具体使用方式如下:

  bool b=a>b?true:false;

  int b=a>b?10:20;

  string b=a>b?"真":"假";

下面是一个小范例:Class3.cs

-----------------------------------------------------------------

using System;
namespace name1{
  class Class3{
    public static void Main(){
      int a=10;
      int b=20;
      int e= a>b?30:40;
      bool t=a>b?true:false;
      string s=a>b?"真":"假";
      Console.WriteLine("e的值是:{0}",e);
      Console.WriteLine("t的值是:{0}",t);
      Console.WriteLine("s的值是:{0}",s);
      Console.ReadLine();
}
}
---------------------------------------------------
3.事件回发
IPostBackEventHandler接口专门定义了处理回发事件的方法,说白了就是onclick事件,如果自定义控件需要处理回发事件,你就需要继承IPostBackEventHandler接口,然后实现接口的RaisePostBackEvent 方法,另外一个简单的方法就是直接继承Button控件就可以了.

RaisePostBackEvent方法用于处理窗体发送给服务器时引发的事件,方法中有一个参数eventArgument 表示要传递到事件处理程序的可选事件参数的 String

下面总结处理回发事件,必须要做的步骤

(1)继承并
实现IPostBackEventHandler接口的RaisePostBackEvent方法

(2)为表单元素定义UniqueID,以与IPostBackEventHandler服务器控件的UniqueID相对应
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普通情况下是不会引发回传的,但是为了方便用户,.net Framework在上面暴露了一个属性叫AutoPostBack,
一旦这个属性为true,就表示这些Control具备了引发回传的能力,具体怎么实现回传呢,还是依赖于上面介绍的两段脚本。
当AutoPostBack为true,CauseValidation为true的时候就注册 WebForm_DoPostBackWithOptions. 当AutoPostBack为true,CasuseValidataion为false的时候就注册 __doPostBack函数,
同时在AutoPostBack属性为true的时候,为了防止性能问题,一般注册的脚本都用setTimeout(函数名,0)包起来,
这样可以认为是一个模拟的异步调用(事实JavaScript是单线程的,这样的调用会自动进入调用队列,等待执行,不会阻塞现在的调用)。
 
另外:在输入回发脚本时,必须给控件指明HTML标记NAME,否则可以回发,但不会执行处理事件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值