我使用绑定到XPODataSource的ASPxGridView,AutoGenerateColumns = true。数据源的表/类名是通过代码设置的,因此我无法在标记中准备网格列(因为不同的表具有不同的列名)。
我想使用DataItemTemplate来自定义每个表的特定列,但在所有示例中,它都在标记中创建的列中使用(例如:http://demos.devexpress.com/aspxgridviewdemos/Templates/Template.aspx)。
那么如何创建DataItemTemplate并将其分配给动态创建的列?
答案 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();