动态添加AjaxControl Toolkit的Tab控件及设置模板

  在这里都注册了快一年了,还没写过任何文章。今天开写吧,以后有什么心得以及学习笔记之类的,都记下来。

  有朋友在使用AjaxControl Toolkit里的Tab控件,他刚刚问怎么实现在cs里动态添加TabPanel项。我建了一个项目试了一下。主要问题是TabPanel里如何创建ContentTemplate。

        <ajaxToolkit:TabContainer>控件使用方法比较简单,直接拖到页面上,添加TabPanel,然后直接输入TabPanel的内容就可以了,控件完全支持设计时的WYSIWYG,非常方便。TabPanel里的内容是通过<contenttemplate></contenttemplate>来指定的。这个对应于TabPanel的ContentTemplate属性,VS里intellisense显示它的类型是ITemplate,这是一个接口,我试着在intellisense里找找有没有类实现了这个接口,但一无所获。找不到这个类,就没有办法给ContentTemplate赋值。于是查看了一下Tab控件的源码,又查阅了MSDN,终于把问题解决了。

  问题关键就在于这个实现了ITemplate接口的类,我找不到,只好自己写了一个。也不知道有没有别的方法,希望有知道的朋友告诉我。全部代码如下:

 
using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  AjaxControlToolkit;

public  partial  class  _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        TabContainer tabContainer1 
= new TabContainer();
        TabPanel tab1 
= new TabPanel();
        tab1.HeaderText 
= "标签1";
        tabContainer1.Tabs.Add(tab1);
        TabPanel tab2 
= new TabPanel();
        tab2.HeaderText 
= "标签2";
        tabContainer1.Tabs.Add(tab2);

        
//建立第一个Tab里的内容
        Panel panel1 = new Panel();
        
        Label label1 
= new Label();
        label1.Text 
= "这是第一个Tab";

        panel1.Controls.Add(label1);

        
//创建一个Template
        TabContentTemplate temp1 = new TabContentTemplate();
        
//添加子控件
        temp1.SetTemplate(panel1);

        tab1.ContentTemplate 
= temp1;
        
this.form1.Controls.Add(tabContainer1);
    }



}


public   class  TabContentTemplate : ITemplate
{
    
private Control _template;

    
public void SetTemplate(Control templateControl)
    
{
        _template 
= templateControl;
    }


    
ITemplate Members#region ITemplate Members

    
public void InstantiateIn(Control container)
    
{
        container.Controls.Add(_template);
    }


    
#endregion

}

  很多控件,如GridView、Repeat等都使用了Template,应该也都可以按这种方法来实现动态设置模板了。

  BTW,另外还有一种方法动态设置模板,就是使用Page.LoadTemplate("template.ascx"),如tab1.ContentTemplate=Page.LoadTemplate("template.ascx")

转载于:https://www.cnblogs.com/wapy/archive/2007/09/24/904464.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值