2012-02-01 62 views
11

我有一个绑定的asp:GridView。在这个我有多个列,我试图从两个数据库字段串联到一个领域的数据。在Gridview的BoundField中显示多个数据字段

如何做到这一点?

这样的事情?

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

正确的大小写和拼写总是加号=) – jadarnel27 2012-02-01 14:29:22

回答

0

试试这个。 如果你使用两个数据集制作一个数据表并将其绑定到gridview。

<asp:BoundField DataField="<%# DataBinder.Eval(Container.DataItem, "f1")%>+ ' ' + <%# DataBinder.Eval(Container.DataItem, "f2")%>" HeaderText="Status" SortExpression="info"/> 
+0

难道你不需要使用模板文件吗?没有绑定的字段? – Arion 2012-02-01 14:22:52

+0

这...有效吗?你测试过了吗? – pseudocoder 2012-02-01 15:23:27

+0

是的,我很确定这不起作用。 -1。 – pseudocoder 2012-02-02 14:50:31

19

很确定你需要使用TemplateField来代替BoundField。

在你的GridView列块:

<asp:TemplateField HeaderText="Name"> 
     <ItemTemplate> 
      <%# Eval("FirstName") + " " + Eval("LastName")%> 
     </ItemTemplate> 
    </asp:TemplateField> 
+0

非常感谢 – 2012-02-02 09:03:50

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

但这不会给第一视图的信息。 – 2014-08-04 13:39:13

10

只是为了完整性,因为我寻找一个解决方案,是先在这里......

您已经使用string.Format()

得到了更多的灵活性
<asp:TemplateField HeaderText="Status"> 
<ItemTemplate> 
    <%# string.Format("{0} {1}", Eval("field1") ,Eval("field2"))%> 
</ItemTemplate> 
</asp:TemplateField> 

在这里您还可以使用string.Format()的力量来格式化da TE和号码类型为这里descriped:https://docs.microsoft.com/en-us/dotnet/standard/base-types/formatting-types

样品:

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

另一种选择是做在代码中自定义的方法,而不是背后的的String.Format

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

Codebehind:

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

@ShieldOfSalvation谢谢我已将它添加到我的答案中 – fubo 2017-11-15 07:51:34