我想这是一个非常普遍的问题,但到目前为止我还没有找到一个优雅的解决方案。
我有很多实例,我有一个ListView或一个绑定到SQL Server SProc的DetailsView控件。我遇到的问题是,有很多实例,当列为空时,我想在UI中显示不同的内容。一个典型的例子是我有一个URL列,它被渲染为LinkButton(在ListViews中)或HyperLinkField(在DetailsViews中) - 当返回Null URL时,我正在渲染没有src属性的链接。理想情况下,我希望在这种情况下不显示此字段。
在每种情况下,当返回空值时,如何跳过/更改该项的呈现?
提前致谢。
更新:我没有机会真正尝试这些,但所有有用的建议。我想我喜欢里克斯的答案最好,但再次感谢其他人......
答案 0 :(得分:2)
<强>标记:强>
<asp:HyperLink id="whatever" runat="server"
NavigateURL='<%# Eval("url") %>' Visible='<%# IsVisible(Eval("url")) %>' />
代码背后:
protected bool IsVisible(object obj)
{
bool result = false;
string url = (string)obj;
if(!string.IsNullOrEmpty(url))
{
result = true;
}
return result;
}
答案 1 :(得分:1)
在模板内绑定到可见性
<asp:HyperLink ... NavigateURL=<%# Eval("url") %> Visible=<%# Eval("url") != null %> />
警告:未经测试,也可能是
<asp:HyperLink ... NavigateURL=<%# Eval("url") %> Visible=<%# Eval("url") != DBNull.Value %> />
答案 2 :(得分:1)
我想你可以在你的代码后面创建一个方法,它将值作为参数,如果它不是null,则返回一个链接。或者您可以使用Listview的数据绑定事件,检查值并隐藏控件(如果它为null)。 既不是一个非常优雅的解决方案,但我想这取决于你的决定。 :)