首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASPxGridView,ITemplate和Eval

ASPxGridView,ITemplate和Eval
EN

Stack Overflow用户
提问于 2012-07-30 16:36:28
回答 2查看 5K关注 0票数 1

如何在c#中为没有任何标记的AXPxGridViewDataTextColumn创建模板,并使用Eval显示DataItem值?

我遇到的-The问题是,字符串"<%#Eval("dataTableField1")%>“显示在GridView中的每一行,而不是相应的值。

下面是我尝试的一个例子:

代码语言:javascript
复制
    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);
        }
    }

下面是一个示例,说明我希望如何处理这个链接中的行高

代码语言:javascript
复制
<dx:GridViewDataTextColumn FieldName="Description" VisibleIndex="3">
    <DataItemTemplate>
        <div id="hr" style="height:100%">
            <%#Eval("Description")%>
        </div>
    </DataItemTemplate>
</dx:GridViewDataTextColumn>

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

下面是一个关于创建模板的链接

提前谢谢你,

苏海伊

编辑:i能够通过将模板赋值移动到CustomColumnDisplayText事件来获得正确显示的第一个元素,但是显示在ASPxGridView中的所有其他元素都显示了Eval字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-01 14:57:24

我有另外两个解决方案,但我删除了它们,因为我认为这是最好的(如有任何其他建议/改进,我将不胜感激):

代码语言:javascript
复制
        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部分。

票数 1
EN

Stack Overflow用户

发布于 2012-07-30 21:59:31

这里是一个示例,但我的示例是与数据库绑定的,我通常使用EditTemplte

代码语言:javascript
复制
</EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="BSA" SortExpression="BSA">
                <ItemTemplate>
                    <asp:Label ID="lblBSA" runat="server" Text='<%# Bind("BSA") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11725752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档