【问题标题】:Format GridView column 2 SQL column values to be separated by a symbol格式化 GridView 列 2 SQL 列值用符号分隔
【发布时间】:2014-01-30 19:26:09
【问题描述】:

我有一个 GridView,其中一列包含来自 SQL 的 2 个值,来自列 Author 和 Author2。 在我的表中,只有一行在两列中都有值,其他行只有一个作者和一个 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>

但两者都导致了:
作者 &
作者 & Author2
作者&

但我希望能够做到这一点:
作者
作者 & Author2
作者

有办法吗?

【问题讨论】:

  • 如果我没记错的话应该有一种方法可以使用数据绑定事件来操作输出。这样您就可以在后面的代码中检查 null 并根据需要设置 author2 的值。

标签: asp.net sql gridview eval templatefield


【解决方案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; }
}

这是输出:

【讨论】:

    【解决方案2】:

    谢谢你,@afzalulh!我能够根据您的代码做到这一点:

    protected void Page_Load(object sender, EventArgs e)
    {
        GridView1.DataSource = SqlDataSource1;
        GridView1.DataBind();
    }
    

    【讨论】:

      猜你喜欢
      • 2019-12-10
      • 2022-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多