2011-04-26 20 views
3

如何通過C#代碼隱藏將具有複選框的模板字段添加到我的DetailsView對象?我無法從閱讀asp.net代碼中找出它。如何使用複選框通過代碼隱藏創建模板域?

我已經將TemplateField和CheckBox對象實例化爲賦值給屬性的值。但是當我使用Fields.Add()時,複選框不顯示。

TemplateField tf_ForMalls = new TemplateField(); 
    tf_ForMalls.HeaderText = "For Malls"; 

    CheckBox chk_ForMalls = new CheckBox(); 
    chk_ForMalls.ID = "chkDelete"; 

    tf_ForMalls.ItemTemplate = chk_ForMalls as ITemplate; 

    dv_SpotDetail.Fields.Add(tf_ForMalls); 
+0

請發佈您的代碼,你到目前爲止嘗試過的東西 – 2011-04-26 04:35:28

回答

8

您將需要的ITemplate派生的自定義類來得到這個工作

public class MyTemplate : ITemplate 
{ 
    #region ITemplate Members 

    public void InstantiateIn(Control container) 
    { 
     CheckBox chk = new CheckBox(); 
     chk.ID = "chk"; 
     container.Controls.Add(chk); 
    } 

    #endregion 
} 

然後在代碼

TemplateField tf = new TemplateField(); 
tf.ItemTemplate = new MyTemplate(); 
detvw.Fields.Add(tf); 

您可以構造爲'的參數傳遞控制ID「或指定ListItemType

希望這可以幫助

+0

我明白了,所以我確實需要爲該模板創建一個自定義類。我會放棄這一點。謝謝。 =) – 2011-04-26 04:50:01

+0

@Erick,這就是模板控制的工作原理 - 當您在標記上指定模板時,ASP.NET運行時爲您創建一個「ITemplate」實現。如果您要從代碼隱藏創建許多模板字段,可以使用通用的ITemplate實現 - 請參閱本文中的相同內容 - http://couldbedone.blogspot.com/2007/07/implementing-itemplate-as -anonymous.html – VinayC 2011-04-26 04:57:26

相關問題