2016-06-09 208 views
0

我有一個TemplateField,它有一些連接項之間用逗號連接。這是爲了在一列中顯示一個地址(存儲在多列中)。它的工作原理,但我想刪除數據庫中任何字段爲空的額外逗號。在TemplateField中刪除多餘的逗號

因爲它不是一個字符串,我不知道如何做到這一點。請幫忙!

<asp:TemplateField HeaderText="Full Address"> 
<ItemTemplate> 
<asp:Label ID="Label1" runat="server" Text="Label"> 
<%# Eval("claddr1") + ", " + Eval("claddr2") + ", " + Eval("claddr3") + ", " + Eval("claddr4") + ", " + Eval("claddr5") + ", " + Eval("claddr6") + ", " + Eval("clcity") + ", " + Eval("clstate") + ", " + Eval("clzip")%> 
</asp:Label>       
</ItemTemplate> 
</asp:TemplateField> 
+0

如果eval最終爲空白字符串,則可以使用三元運算符將邏輯放在那裏以顯示空白。它允許你把C#邏輯放在這些標籤中。 – jpaugh78

+0

你可以在C#代碼中編寫用於分配label1.txt的邏輯,但不要將其作爲評估 –

回答

1

你可以過濾掉與LINQ空,然後一起加入其餘:

String.Join(", ", 
      new string[]{"claddr1", "claddr2", 
         "claddr3", "claddr4", 
         "claddr5", "claddr6", 
         "clcity", "clstate", 
         "clzip"} 
       .Select(x => Eval(x)) 
       .Where(x => x!= null) 
      ) 

我還建議把這個到後面的代碼,以保持標記非常乾淨:

<asp:Label ID="Label1" runat="server" Text="Label"> 
<%# GetFormattedAddress() %> 

protected string GetFormattedAddress() 
{ 
    return String.Join(", ", 
      new string[]{"claddr1", "claddr2", 
         "claddr3", "claddr4", 
         "claddr5", "claddr6", 
         "clcity", "clstate", 
         "clzip"} 
       .Select(x => Eval(x)) 
       .Where(x => x!= null) 
      ); 
} 
+0

嗨,感謝你的支持,除了額外的逗號仍然保留在地址中! –

+0

@ JayF1,那很奇怪。如果該字段在數據庫中爲空,它是否爲空或空字符串? – Andrei

+0

當我查詢數據庫 –