我有一个绑定了数据的asp:GridView
,其中有多个列。我试图将两个数据库字段的数据拼接成一个字段。
如何实现这个功能?
类似这样的代码?
asp:BoundField DataField="field1 + ' ' + field2" HeaderText="Status" SortExpression="info"
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<%# Eval("FirstName") + " " + Eval("LastName")%>
</ItemTemplate>
</asp:TemplateField>
仅为完整性,因为我搜索了解决方案并首先到达这里...
使用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;
}
ToolTip='<%# Eval("LastName") & "-" & Eval("FirstName") %>'
<asp:BoundField DataField="<%# DataBinder.Eval(Container.DataItem, "f1")%>+ ' ' + <%# DataBinder.Eval(Container.DataItem, "f2")%>" HeaderText="Status" SortExpression="info"/>