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

  有朋友在使用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
}

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

  BTW,另外还有一种方法动态设置模板,就是使用Page.LoadTemplate("template.ascx"),如tab1.ContentTemplate=Page.LoadTemplate("template.ascx")
posted on 2007-09-24 18:31  我是誰  阅读(1773)  评论(6编辑  收藏  举报