2012-10-05 84 views
1

請幫助!我一直在尋找這個小時,但也許解決方案是如此明顯,我完全忽略它:(使用html標籤的Eval周圍

我有一個列表視圖綁定到一個sql表。該表包含一堆字段,只保留'T '或NULL值,除了最後兩個字段爲用戶評論提供自由類型文本

對於T/NULL值 - 配置listview以便空單元格不顯示, 「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>" %>' /> 

我猜「‘+ ... +’」不關心什麼或不在中間......但如何解決它?必須有一個非常簡單的解決方案,甚至問這個問題我覺得很愚蠢。有什麼建議嗎?

回答

3

從描述中,根本不需要asp:Label。爲什麼不把​​換成P標籤呢?

<p><%# Eval("Lyme","Lyme Disease") %></p> 

即使標籤正常工作,您也不希望產生標記(標籤內的段落沒有意義)。

要處理的顯示/隱藏,如果該項目是空的,你可以這樣做:

<ItemTemplate> 
    <p runat="server" visible='<%#!string.IsNullOrEmpty(Eval("OtherComment"))%>'> 
     <%# Eval("Lyme","Lyme Disease") %> 
    </p> 
</ItemTemplate> 
+0

標籤被列表視圖自動生成 - 我離開它,那是因爲我不太熟悉ASP.NET ..雖然這不是問題 - 這是我擔心的空白。在Eval語句之外使用

標籤會導致頁面呈現時出現空白。並且是空白是一個巨大的問題,因爲大約有30個項目可能會被顯示。 – Nevan

+0

試試我剛剛添加的片段...類似的東西應該隱藏段落,如果沒有值。 –

+0

謝謝!!!!!你的解決方案就像一個魅力:) – Nevan

2

白色的空間將顯示出來,因爲P是不是評估和演示的一部分; <p>Eval()</p>

不知道是否優雅,但你可以換的評估和演示的方法中:

public string ParagraphIfData(string input) 
{ 
    if(!string.IsNullOrEmpty(input)) 
     return "<p>" + input + "</p>"; 
    return ""; 
} 

然後:

<%# ParagraphIfData(Eval("Lyme","Lyme Disease")) %> 
+1

+1 - 這是一個有效的解決方案,並且是一種處理過於複雜的內聯綁定表達式的好方法。 –

+0

謝謝,這對我正在處理的幾個頁面將會非常有用! – Nevan