请帮助!!我一直在寻找这个好几个小时,但也许解决方案是如此明显我完全忽视它:(
我有一个绑定到sql表的listview。该表包含一组仅包含“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>" %>' />
我猜“”+ + +“”并不关心中间是什么内容......但是如何解决?必须有一个非常简单的解决方案,我觉得非常愚蠢甚至问这个。有什么建议吗?
答案 0 :(得分: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>
答案 1 :(得分: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")) %>