如何通过代码隐藏使复选框创建TemplateField?

时间:2011-04-26 04:24:06

标签: c# asp.net code-behind

如何通过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);

1 个答案:

答案 0 :(得分:9)

您需要一个从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);

您可以让构造函数传递'control id'的参数或指定 ListItemType

希望这有帮助