DataItemTemplate用于ASPxGridView中动态创建的列

时间:2013-12-13 14:36:31

标签: asp.net webforms devexpress aspxgridview

我使用绑定到XPODataSource的ASPxGridView,AutoGenerateColumns = true。数据源的表/类名是通过代码设置的,因此我无法在标记中准备网格列(因为不同的表具有不同的列名)。

我想使用DataItemTemplate来自定义每个表的特定列,但在所有示例中,它都在标记中创建的列中使用(例如:http://demos.devexpress.com/aspxgridviewdemos/Templates/Template.aspx)。

那么如何创建DataItemTemplate并将其分配给动态创建的列?

1 个答案:

答案 0 :(得分:1)

答案就在这里,应该用google搜索更多: http://www.devexpress.com/Support/Center/Example/Details/E293

基本上,您将模板创建为类:

class MyHyperlinkTemplate : ITemplate {
    public void InstantiateIn(Control container) {
        ASPxHyperLink link = new ASPxHyperLink();
        GridViewDataItemTemplateContainer gridContainer = (GridViewDataItemTemplateContainer)container;
        link.NavigateUrl = string.Format("~/details.aspx?Device={0}", gridContainer.KeyValue);
        link.Text = string.Format("Get details about device {0}", gridContainer.KeyValue);
        container.Controls.Add(link);
    }
}

然后将其分配给一列:

((GridViewDataColumn)ASPxGridView1.Columns["colItemTemplate"]).DataItemTemplate = new MyHyperlinkTemplate();