首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 動態產生控制項與事件繫結 (4/4):AjaxControlToolkit TabContainer 動態加入 TabPanel 與 ITemplate 實作

     編輯:關於C語言

Page_Init vs Page_Load

動態建立控制項建議放在 Page_Init,避免 ViewState 還原時機問題導致其他按鈕失效 (特別是 AjaxControlToolkit 控件)。

動態建立 TabContainer 與 TabPanel


protected void Page_Init(object sender, EventArgs e)
{
    var tabContainer = new TabContainer();
    var tab1 = new TabPanel { HeaderText = "標籤1" };
    var tab2 = new TabPanel { HeaderText = "標籤2" };
    tabContainer.Tabs.Add(tab1);
    tabContainer.Tabs.Add(tab2);

    // 建立 Tab 內容:需實作 ITemplate
    var panel1 = new Panel();
    panel1.Controls.Add(new Label { Text = "這是第一個 Tab" });

    var template1 = new TabContentTemplate();
    template1.SetTemplate(panel1);
    tab1.ContentTemplate = template1;

    form1.Controls.Add(tabContainer);
}

ITemplate 實作類別


public class TabContentTemplate : ITemplate
{
    private Control _template;
    public void SetTemplate(Control ctl) => _template = ctl;

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

替代方案

使用 Page.LoadTemplate("Template.ascx") 載入使用者控制項作為 Template:


tab1.ContentTemplate = Page.LoadTemplate("Template.ascx");

適用於複雜版面,分離標記與邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved