【问题标题】:How to add a checkbox column to a control that is inherited from ASP.NET DataGrid如何将复选框列添加到从 ASP.NET DataGrid 继承的控件
【发布时间】:2014-08-07 01:43:47
【问题描述】:

我已经阅读了很多关于如何从页面内向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 来扩展它呢?我尝试从OnPreRender 中将此 TemplateColumn 添加到 Columns 属性,但没有任何反应。 SelectionCheckBoxTemplateInstantiateIn() 方法永远不会被触发。任何帮助表示赞赏。谢谢!

【问题讨论】:

    标签: c# asp.net datagrid


    【解决方案1】:

    经过大量挖掘和尝试不同的解决方案,我发现需要在虚拟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;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      相关资源
      最近更新 更多