在Gridview的BoundField中显示多个数据字段

12

我有一个绑定了数据的asp:GridView,其中有多个列。我试图将两个数据库字段的数据拼接成一个字段。

如何实现这个功能?

类似这样的代码?

asp:BoundField DataField="field1 + ' ' + field2" HeaderText="Status" SortExpression="info"

适当的大写和拼写总是加分的 =) - Josh Darnell
4个回答

26
很确定您需要使用TemplateField而不是BoundField来实现这个功能。
在您的GridView列块中:
    <asp:TemplateField HeaderText="Name">
        <ItemTemplate>
            <%# Eval("FirstName") + " " + Eval("LastName")%>
        </ItemTemplate>
    </asp:TemplateField>

17

仅为完整性,因为我搜索了解决方案并首先到达这里...

使用string.Format()可以更灵活。

<asp:TemplateField HeaderText="Status">
 <ItemTemplate>
     <%# string.Format("{0} {1}", Eval("field1") ,Eval("field2"))%>
 </ItemTemplate>
</asp:TemplateField>

在这里,您还可以使用 string.Format() 的强大功能来按照此处描述的方式格式化日期和数字类型:https://learn.microsoft.com/en-us/dotnet/standard/base-types/formatting-types

示例:

<%# String.Format("{0:MM/dd/yyyy} - {1:N2}", Eval("dateValue1"), Eval("decimalValue2")) %>

另一种选择是使用代码后台进行自定义方法。

ASPX:

<asp:TemplateField HeaderText="Status">
   <ItemTemplate>
      <asp:Label runat="server" Text='<%#GetStatus(Eval("Status1"),Eval("Status2")) %>'>
      </asp:Label>
   </ItemTemplate>
</asp:TemplateField>

代码后端:

public string GetStatus(object Status1, object Status2)
{
    return (string)Status1 + " " + (string)Status2;
}

1
ToolTip='<%# Eval("LastName") & "-" & Eval("FirstName") %>'

-1
尝试这样做。 如果您正在使用两个数据集,请将它们合并为一个数据表,并将其绑定到GridView。
<asp:BoundField DataField="<%# DataBinder.Eval(Container.DataItem, "f1")%>+ ' ' + <%# DataBinder.Eval(Container.DataItem, "f2")%>" HeaderText="Status" SortExpression="info"/>

你不需要使用模板文件吗?不绑定字段? - Arion
@pseudocoder:它可以工作,Container.DataItem是当前项,f1、f2是要从当前项中读取的属性。 - user365268

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接