自定义控件学习(一)

一、选择基类control,webcontrol,compositecontrol,现有asp.net control

 

二、控件呈现顺序

 

 RenderControl(HtmlTextWriter writer)

Render(HtmlTextWriter writer)

 RenderBeginTag(HtmlTextWriter writer)

 RenderContents(HtmlTextWriter output)--默认在外面生成一个span

 RenderEndTag(HtmlTextWriter writer)

 

/// <summary>
   /// 生成一个默认SPAN
   /// </summary>
   public class DefaultCtl:WebControl
    {

      

       /// <summary>
       /// 事件1
       /// </summary>
       /// <param name="writer"></param>
       public override void RenderControl(HtmlTextWriter writer)
       {
           base.RenderControl(writer);
       }

       /// <summary>
       /// 事件2-保护的方法
       /// </summary>
       /// <param name="writer"></param>
       protected override void Render(HtmlTextWriter writer)
       {
            base.Render(writer);
       }

       /// <summary>
       /// 事件3
       /// </summary>
       /// <param name="writer"></param>
       public override void RenderBeginTag(HtmlTextWriter writer)
       {
            base.RenderBeginTag(writer);
       }

       /// <summary>
       /// 事件4--保护的方法
       /// </summary>
       /// <param name="writer"></param>
       protected override void RenderContents(HtmlTextWriter writer)
       {
           base.RenderContents(writer);
       }

       /// <summary>
       /// 事件5
       /// </summary>
       /// <param name="writer"></param>
       public override void RenderEndTag(HtmlTextWriter writer)
       {
           base.RenderEndTag(writer);
       }

      
    }

 

三、Render呈现控件的三种方式

     protected override void RenderContents(HtmlTextWriter writer)
        {
            //方式一,通过HtmlTextWriterAttribute添加属性
            writer.AddAttribute(HtmlTextWriterAttribute.Id, "双烟弥勒");
            writer.AddAttribute(HtmlTextWriterAttribute.Href, "http://www.baidu.com");
            writer.AddAttribute(HtmlTextWriterAttribute.Target, "_blank");
            writer.AddAttribute(HtmlTextWriterAttribute.Title, "双烟弥勒");

            writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "#ff0000");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Cursor, "hand");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "20px");
            writer.RenderBeginTag(HtmlTextWriterTag.A);
            writer.Write("方式一,通过HtmlTextWriterAttribute添加属性");
            writer.RenderEndTag();

            writer.WriteBreak();
            //方式二,直接输出HTML代码
            writer.AddStyleAttribute("id", "JZTL");
            writer.AddStyleAttribute("href", "http://www.google.com");
            writer.AddStyleAttribute("target", "_blank");
            writer.AddAttribute("title", "双烟弥勒");

            writer.AddStyleAttribute("cursor", "hand");
            writer.AddStyleAttribute("color", "#00ff00");
            writer.AddStyleAttribute("font-size", "40px");
            writer.RenderBeginTag("a");
            writer.Write("方式二,直接输出HTML代码");
            writer.RenderEndTag();

            writer.WriteBreak();//br

            //方式三,使用服务器控件的RenderControl 方法
            HtmlGenericControl a = new HtmlGenericControl("a");
            a.Attributes.Add("href", "http://www.sina.com");
            a.Attributes.Add("target", "_blank");
            a.Style.Add(HtmlTextWriterStyle.FontSize, "30px");
            a.InnerHtml = "方式三,使用服务器控件的RenderControl 方法";
            a.RenderControl(writer);


        }

 

四、AddAttributesToRender方法【重载最外层如span的属性】

 /// <summary>
       /// 重写默认的span标记
       /// </summary>
       protected override HtmlTextWriterTag TagKey
       {
           get
           {
               return HtmlTextWriterTag.Table;
           }
       }

       /// <summary>
       /// 重写其table的属性
       /// </summary>
       /// <param name="writer"></param>
       protected override void AddAttributesToRender(HtmlTextWriter writer)
       {
           writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
           writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
           writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
           base.AddAttributesToRender(writer);
       }

       protected override void RenderContents(HtmlTextWriter writer)
       {
           writer.RenderBeginTag(HtmlTextWriterTag.Tr);
           writer.RenderBeginTag(HtmlTextWriterTag.Td);
           writer.Write("表格中内容");
           writer.RenderEndTag();
           writer.RenderEndTag();
       }

 

 

      

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值