如何将复选框列添加到从ASP.NET DataGrid继承的控件

时间:2014-08-07 01:43:48

标签: c# asp.net datagrid

我已经阅读了很多关于如何从页面中向DataGrid添加复选框列的文章,但是在继承控件时我找不到有关如何添加列的任何内容本身。

基本上,我知道我需要创建一个继承自ITemplate的类。这些方面的东西:

public class SelectionCheckBoxTemplate : ITemplate {
    public void InstantiateIn(Control container)
    {
        var checkbox = new CheckBox(...);

        container.Controls.Add(checkbox);
    }
}

然后,需要将此模板添加到TemplateColumn对象:

var checkBoxTemplate = new TemplateColumn();

checkBoxTemplate.ItemTemplate = new SelectionCheckBoxTemplate();

然而,这是我被卡住的地方。现在所有文章都显示将此TemplateColumn对象添加到Page的DataGrid控件。但是,如果我通过继承它来扩展DataGrid呢?我尝试将此TemplateColumn添加到OnPreRender内的Columns属性中,但没有任何反应。永远不会解雇SelectionCheckBoxTemplate的{​​{1}}方法。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

经过大量挖掘和尝试不同的解决方案之后,我发现需要在虚拟CreateColumnSet()方法中添加该列。似乎没有记录在任何地方:

    protected override ArrayList CreateColumnSet(PagedDataSource source, bool useDataSource)
    {
        var columns = base.CreateColumnSet(source, useDataSource);

        var checkboxTemplate = new TemplateColumn();
        checkboxTemplate.ItemTemplate = ...;

        columns.Insert(0, checkboxTemplate);

        return columns;
    }