4

当 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 值,有人对上述或任何其他隐藏逗号的替代方法有建议吗?

4

4 回答 4

12

这应该有效:

<%# 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() + "," : "" %>

健康)状况 ?真假

于 2013-08-09T13:30:55.757 回答
3

您可以在代码隐藏中调用方法,以便可以将此逻辑从标记中取出,如下所示:

protected string GetAddress()
{
    string boundAddressValue = Eval("Address_Line_1") as string;

    return !String.IsNullOrEmpty(boundAddressValue) ? boundAddressValue : String.Empty;
}

现在您可以像这样通过标记调用它:

<%# GetAddress() %>

注意:这种方法的缺点是,如果您GetAddress在数据绑定之外调用,Eval则会崩溃,但它会使您的标记更加清晰,并且您可以获得编辑器的帮助以帮助解决语法问题。

于 2013-08-09T13:50:12.120 回答
1

只是使用

(DataBinder.Eval(e.Row.DataItem, "ColumnName") ?? "AnyValueAccordingToColumnDataTyle")
于 2014-02-18T12:37:34.560 回答
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());
}
于 2014-06-12T21:08:08.420 回答