zoukankan      html  css  js  c++  java
  • 自定义控件(支持模板)

    基于模版的简单控件
    <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApp3.WebForm1" %>
    <%@ Register TagPrefix="MY" NameSpace="WebApp3" Assembly="WebApp3" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
     <HEAD>
      <title>WebForm1</title>
      <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
      <meta name="CODE_LANGUAGE" Content="C#">
      <meta name="vs_defaultClientScript" content="JavaScript">
      <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
     </HEAD>
     <body MS_POSITIONING="GridLayout">
      <form id="Form1" method="post" Runat="Server">
       <MY:MyTemplateC Text="button" runat="Server">
       <ItemTemplate>
       <asp:Button Text="<%# Container.Text %>"  Runat=server></asp:Button>
       </ItemTemplate>
       </MY:MyTemplateC>
      </form>
     </body>
    </HTML>

    .cs
    private void Page_Load(object sender, System.EventArgs e)
      {
       // 在此处放置用户代码以初始化页面
       if(!this.Page.IsPostBack)
        DataBind();
      }


    控件代码:


    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;


    namespace WebApp3
    {
     /// <summary>
     /// MyTemplateC 的摘要说明。
     /// </summary>
     [ParseChildren(true)]
     public class MyTemplateC: Control,INamingContainer
     {  
      
      private ITemplate itemPlate;
      [TemplateContainer(typeof(MyTemplateC))]//指定当前控件类型
      public  ITemplate ItemTemplate
      {
       get{return itemPlate;}
       set{itemPlate=value;}
      }

      private string text;
      public string Text
      {
       get{return text;}
       set{text=value;}
      }

      protected override void OnDataBinding(EventArgs e)
      {  
       this.EnsureChildControls();//确定是否包含子控件,否则创建
       base.OnDataBinding (e);
      }

      protected override void CreateChildControls()
      {
       if(itemPlate!=null)
       {
        itemPlate.InstantiateIn(this);//当由类实现时,创建子控件对象
       }
       else
       {
         this.Controls.Add(new LiteralControl(" NO TEMPLATE"));
       }
       
      }
      }
    }

  • 相关阅读:
    Android AHandle AMessage
    android java 与C 通过 JNI双向通信
    android 系统给应用的jar
    UE4 unreliable 同步问题
    UE4 difference between servertravel and openlevel(多人游戏的关卡切换)
    UE4 Run On owing Client解析(RPC测试)
    UE4 TSubclassOf VS Native Pointer
    UE4 内容示例网络同步Learn
    UE4 多人FPS VR游戏制作笔记
    UE4 分层材质 Layerd Materials
  • 原文地址:https://www.cnblogs.com/zhuor/p/282949.html
Copyright © 2011-2022 走看看