ASPxGridView,样式,和Val(ASPxGridView, ITemplate, and

2019-10-31 23:51发布

如何创建无任何标记,并使用eval显示的DataItem值的AXPxGridViewDataTextColumn在C#中的模板?

,我有-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>

此文档链接显示在标记使用模板类似的例子,但我想这样做在后面的代码。

这里是一个链接上创建模板。

提前致谢,

Soenhay

编辑:我是能够得到正确的模板分配移动到CustomColumnDisplayText事件,但在ASPxGridView显示的所有其他元素显示的第一个元素显示评估和演示串。

Answer 1:

下面有一个例子,但矿与数据库结合,我通常使用EditTemplte

</EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="BSA" SortExpression="BSA">
                <ItemTemplate>
                    <asp:Label ID="lblBSA" runat="server" Text='<%# Bind("BSA") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>


Answer 2:

我有其他2个解决方案,但我把他们赶走,因为我认为这是最好的(我将是任何其他建议/改进感激):

        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方法的一部分。



文章来源: ASPxGridView, ITemplate, and Eval