我有一个GridView,其中一列包含SQL中的2个值,来自Author和Author2列。 在我的表中,只有一行在两列中都有值,其他行只有一个Author和NULL。我想只将两位作者用符号“&”分开。
我尝试过这几种方式,第一种是使用CSS:
<head>
<style>
.label2css:before {
content: "& ";
}
</style>
</head>
...
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Author") %>'></asp:Label>
<asp:Label ID="Label2" CssClass="label2css" runat="server" Text='<%# Eval("Author2") %>'></asp:Label>
</ItemTemplate>
和另一个:
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Author") %>'></asp:Label>
<asp:Label ID="Label2" runat="server" Text='<%# "&" + Eval("Author2") %>'> </asp:Label>
</ItemTemplate>
但两者都导致了这一点:
作者&amp;
作者&amp; Author2
作者&amp;
但我希望能够做到这一点:
作者
作者&amp; Author2
作者
有办法吗?
答案 0 :(得分:1)
我会这样做:
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Author") %>'></asp:Label>
<asp:Label ID="Label2" runat="server" Text='<%# String.IsNullOrEmpty(Eval("Author2") as string) ? "" : Eval("Author2", "& {0}") %>'> </asp:Label>
</ItemTemplate>
这是我的测试代码。
标记:
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Author") %>'></asp:Label>
<asp:Label ID="Label2" runat="server" Text='<%# String.IsNullOrEmpty(Eval("Author2") as string) ? "" : Eval("Author2", "& {0}") %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
代码:
public partial class WebForm3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = new List<MyClass>(){
new MyClass { Author="Author"},
new MyClass { Author="Author", Author2="Author2"},
new MyClass { Author="Author"}
};
GridView1.DataBind();
}
}
public class MyClass
{
public string Author { get; set; }
public string Author2 { get; set; }
}
这是输出:
答案 1 :(得分:0)
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = SqlDataSource1;
GridView1.DataBind();
}