当DataItem为空时,我无法确定如何隐藏','。
基本上,我有一个显示已注册地址的表格行,并使用以下技术填充:
<%# DataBinder.Eval(Container.DataItem, "Address_Line_1" )%>,
<%# DataBinder.Eval(Container.DataItem, "Address_Line_2")%>,
<%# DataBinder.Eval(Container.DataItem, "TOWNLAND")%>,
<%# DataBinder.Eval(Container.DataItem, "CITY")%>,
<%# DataBinder.Eval(Container.DataItem, "STATE")%>,
现在,如果上面的一个或多个DataItem返回Empty,那么就在前端 它显示为
地址1 ,,, CITY ,,
我尝试了以下隐藏逗号(','),但我一直收到错误
失踪')' 在'If'陈述的第一行
<%#IIf(IsDBNull(DataBinder.Eval(Container.DataItem, "STATE")) OrElse
String.IsNullOrEmpty(DataBinder.Eval(Container.DataItem, "STATE")) , "" ,
DataBinder.Eval(Container.DataItem, "STATE") & ",")%>
我不确定我的'if'陈述是否错误或不能如上所述?
任何人都有关于上述或任何其他隐藏逗号的替代方法的建议,如果是NULL值?
答案 0 :(得分:10)
这应该有效:
<%# DataBinder.Eval(Container.DataItem, "Address_Line_1") != null && !String.IsNullOrEmpty(DataBinder.Eval(Container.DataItem, "Address_Line_1").ToString()) ? DataBinder.Eval(Container.DataItem, "Address_Line_1").ToString() + "," : "" %>
条件? true:false
答案 1 :(得分:2)
您可以在代码隐藏中调用方法,这样您就可以从标记中取出这个逻辑,如下所示:
protected string GetAddress()
{
string boundAddressValue = Eval("Address_Line_1") as string;
return !String.IsNullOrEmpty(boundAddressValue) ? boundAddressValue : String.Empty;
}
现在你可以通过这样的标记来调用它:
<%# GetAddress() %>
注意:这种方法的缺点是如果你在数据绑定之外调用GetAddress
,那么Eval
会爆炸,但它会使你的标记更清晰,你可以获得编辑器,以帮助解决语法问题。
答案 2 :(得分:1)
只需使用
(DataBinder.Eval(e.Row.DataItem, "ColumnName") ?? "AnyValueAccordingToColumnDataTyle")
答案 3 :(得分:0)
有点晚了,但是像
这样的东西呢protected string GetAddress()
{
var parts = new List<string>(new string[]
{
Eval("Address_Line_1") as string,
Eval("Address_Line_2") as string,
Eval("TOWNLAND") as string,
Eval("CITY") as string,
Eval("STATE") as string
});
return string.Join(", ", parts.Where(x => !string.IsNullOrEmpty(x)).ToArray());
}
//或
protected string JoinEval(string delim, param string[] fields)
{
var parts = new List<string>();
foreach (string field in fields)
{
string value = Eval(field).ToString();
if (!string.IsNullOrEmpty(value))
parts.Add(value);
}
return string.Join(delim, parts.ToArray());
}