如何在c#中为没有任何标记的AXPxGridViewDataTextColumn创建模板,并使用Eval显示DataItem值?
我遇到的-The问题是,字符串"<%#Eval("dataTableField1")%>“显示在GridView中的每一行,而不是相应的值。
下面是我尝试的一个例子:
public override void DataBind()
{
...
GridViewDataTextColumn myCol = new GridViewDataTextColumn();
myCol.Caption = "col1";
myCol.FieldName = "dataTableField1";
myCol.DataItemTemplate = new ColumnDataItemTemplate();
theGridView.Columns.Clear();
theGridView.Columns.Add(myCol);
theGridView.DataSource = AdjustDataSource();
theGridView.DataBind();
...
}
public class ColumnDataItemTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
GridViewDataItemTemplateContainer Container = (container as GridViewDataItemTemplateContainer);
LiteralControl lit = new LiteralControl("<div id=\"hr\" style=\"height:100%\"><%#Eval(\"dataTableField1\")%></div>");
Container.Controls.Add(lit);
}
}下面是一个示例,说明我希望如何处理这个链接中的行高
<dx:GridViewDataTextColumn FieldName="Description" VisibleIndex="3">
<DataItemTemplate>
<div id="hr" style="height:100%">
<%#Eval("Description")%>
</div>
</DataItemTemplate>
</dx:GridViewDataTextColumn>这个文档链接展示了在标记中使用模板的类似示例,但我想在后面的代码中这样做。
下面是一个关于创建模板的链接。
提前谢谢你,
苏海伊
编辑:i能够通过将模板赋值移动到CustomColumnDisplayText事件来获得正确显示的第一个元素,但是显示在ASPxGridView中的所有其他元素都显示了Eval字符串。
发布于 2012-08-01 14:57:24
我有另外两个解决方案,但我删除了它们,因为我认为这是最好的(如有任何其他建议/改进,我将不胜感激):
public override void DataBind()
{
...
GridViewDataTextColumn myCol = new GridViewDataTextColumn();
myCol.Caption = "col1";
myCol.FieldName = "dataTableField1";
myCol.DataItemTemplate = new ColumnDataItemTemplate();
theGridView.Columns.Clear();
theGridView.Columns.Add(myCol);
theGridView.DataSource = AdjustDataSource();
theGridView.DataBind();
...
}
public class ColumnDataItemTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
GridViewDataItemTemplateContainer Container = (container as GridViewDataItemTemplateContainer);
LiteralControl lit = new LiteralControl("<div id='hr' style='height:100%; font-size:x-large;'>" + DataBinder.Eval(Container.DataItem, Container.Column.FieldName) + "</div>");
Container.Controls.Add(lit);
}
}在这个链接中,我发现了一个不使用该事件的原因:“模板列不应该处理CustomColumnDisplayText事件。”
这个链接帮助完成了DataBinder.Eval部分。
发布于 2012-07-30 21:59:31
这里是一个示例,但我的示例是与数据库绑定的,我通常使用EditTemplte
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="BSA" SortExpression="BSA">
<ItemTemplate>
<asp:Label ID="lblBSA" runat="server" Text='<%# Bind("BSA") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>https://stackoverflow.com/questions/11725752
复制相似问题