1

请帮忙!!我已经搜索了几个小时,但也许解决方案非常明显,我完全忽略了它:(

我有一个绑定到 sql 表的列表视图。该表包含一堆仅包含“T”或 NULL 值的字段,最后两个字段除外,其中包含用于用户评论的自由类型文本。

对于 T/NULL 值 - 列表视图配置为不显示空单元格,并且在存在“T”值的地方,它将显示自定义文本并为下一项创建换行符。此语法正是这样做的:

<asp:Label ID="LymeLabel" runat="server" Text='<%# Eval("Lyme","Lyme Disease<br />") %>' />

但是,我希望最后两个字段(自由类型文本)以段落样式显示,段落标记围绕 Eval 语句。标签必须构成 Eval 的一部分,以便在单元格为空时它们不会呈现空白。我的想法是这样做,但它不起作用 - 空格以任何一种方式显示:

<asp:Label ID="OtherCommentLabel" runat="server" Text='<%# "<p>"+Eval("OtherComment")+"</p>" %>' />

我猜 ""+ ... +" " 不在乎中间有什么或不在中间.. 但如何解决呢?必须有一个非常简单的解决方案,即使问这个我也觉得很愚蠢。请问有什么建议吗?

4

2 回答 2

3

根据描述,您根本不需要asp:Label。为什么不把它包装Eval()在一个P标签中呢?

<p><%# Eval("Lyme","Lyme Disease") %></p>

即使标签有效,您也不想要生成的标记(标签内的段落没有意义)。

如果项目为空,要处理显示/隐藏,您可以执行以下操作:

<ItemTemplate>
    <p runat="server" visible='<%#!string.IsNullOrEmpty(Eval("OtherComment"))%>'>
        <%# Eval("Lyme","Lyme Disease") %>
    </p>
</ItemTemplate>
于 2012-10-05T08:26:31.200 回答
2

空白会出现,因为 p 不是 Eval 的一部分;<p>Eval()</p>.

不确定是否优雅,但您可以将 Eval 包装在一个方法中:

public string ParagraphIfData(string input)
{ 
    if(!string.IsNullOrEmpty(input))
        return "<p>" + input + "</p>";
    return "";
}

然后:

<%# ParagraphIfData(Eval("Lyme","Lyme Disease")) %>
于 2012-10-05T08:42:58.873 回答