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
     
    当然这些都是最基本的知识,更多的知识在后期我会继续讲述。
     
  • 相关阅读:
    hdu 5387 Clock (模拟)
    CodeForces 300B Coach (并查集)
    hdu 3342 Legal or Not(拓扑排序)
    hdu 3853 LOOPS(概率DP)
    hdu 3076 ssworld VS DDD(概率dp)
    csu 1120 病毒(LICS 最长公共上升子序列)
    csu 1110 RMQ with Shifts (线段树单点更新)
    poj 1458 Common Subsequence(最大公共子序列)
    poj 2456 Aggressive cows (二分)
    HDU 1869 六度分离(floyd)
  • 原文地址:https://www.cnblogs.com/kingeric/p/634092.html
Copyright © 2011-2022 走看看