zoukankan      html  css  js  c++  java
  • 自定义控件常用到的知识

    在我们自定义控件的时候,很多地方需要我们自己去写.
     
    这篇文章就常用到的内容和方法进行介绍
     
    一、任何让生成的控件具有自己的TagPrefix?
    如:FreeTextBox控件,当你在工具栏把它拖入页面时,你可以看下HTML代码,它代码如下:<FTB:FreeTextBox id = "FreeTextBox1" ......></FTB>
    TagPrefix说的就是这个FTB。
     
    其实在开发的时候非常见到,只需要在命名空间上方加入代码:
    [assembly:TagPrefix("FreeTextBoxControls", "FTB")]就可以了。
    例如:FreeTextBox 控件的做法就是这样的
    [assembly:TagPrefix("FreeTextBoxControls", "FTB")]就可以了。
    namespace FreeTextBoxControls
     
    二、一般来说自定义控件需要继承几个接口
    public class FreeTextBox: WebControl,INamingContainer,IPostBackDataHandler
    下面一一进行讲解
    1、WebControl,Control都可以
    这表明是从WebControl或Control继承的。
    =====================================================
    2、INamingContainer
    MSDN给出的解释为:标识在 Page 对象的控件层次结构内创建新 ID 命名空间的容器控件。这仅是一个标记接口。
    那么作用是什么?
    避免同一页上的命名冲突(说白的就是:假如你的页面中拖入两个FreeTextBox,你会发行它两个FreeTextBox的ID都是不一样的,自动的生成不一样的ID)。
    =====================================================
    3、IPostBackDataHandler
    定义 ASP.NET 服务器控件为自动加载回发数据而必须实现的方法。
    当要使编程方式实现的控件实现数据自动回发时,就必须要实现这个接口
     
    通俗的解释:你开发的自定义控件需要数据回发时,需要用到此接口

    公共方法
    LoadPostData 当由类实现时,为 ASP.NET 服务器控件处理回发数据。
    RaisePostDataChangedEvent 当由类实现时,用信号要求服务器控件对象通知 ASP.NET 应用程序该控件的状态已更改。
     
    #region================LoadPostData==========================
      public bool LoadPostData(String postDataKey, NameValueCollection values)
      {   
       string PresentValue = this.ViewStateText;
       string PostedValue = values[base.ID];
       if (!PresentValue.Equals(PostedValue))
       {
        this.Text = PostedValue;
        return true;
       }
       else
       {
        return false;
       }
      }
      #endregion 
     
    #region================RaisePostDataChangedEvent==========================
      public void RaisePostDataChangedEvent()
      {
       // nothing happens for text changed
      }
      #endregion
     
    当然这些都是最基本的知识,更多的知识在后期我会继续讲述。
     
  • 相关阅读:
    mysql从视图view简化到带子查询的sql
    my.ini或my.cnf
    Windows文件在linux下每行后出现^M字样
    Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
    javascript 判断中文字符长度
    该如何正确的使用position属性 它的作用是什么?
    css中em与px的介绍及换算方法
    如何卸载Linux下的Apache?
    HDU 3954 Level up
    HDU 4027 Can you answer these queries?
  • 原文地址:https://www.cnblogs.com/kingeric/p/634092.html
Copyright © 2011-2022 走看看