2010-06-09 52 views
0

我正在嘗試將條件放入我的ASP中繼器標記中。我有一個表正在創建,其中一個td項目是一個鏈接。問題是我需要通過檢查中繼容器中的一個變量中的值來創建鏈接。這裏是我的代碼:ASP Repeater中的條件

<td><%#((VWApp.Code.TrackDM)Container.DataItem).CdNo%></td> 
<td><%#((VWApp.Code.TrackDM)Container.DataItem).ShippingNo%></td> 

現在我需要檢查ShippingNo的值,而不是顯示它需要顯示一個鏈接。我試圖寫這樣的條件是這樣的:

if(((VWApp.Code.TrackDM)Container.DataItem).ShippingNo. ..) 
{ 
// do processing and generate a link that needs to displayed 
} 

但是我得到錯誤時,試圖做到這一點。任何人都可以引導我以正確的方式做到這一點?

任何想法和建議,高度讚賞。

+1

什麼是你的錯誤? – 2010-06-09 13:40:01

回答

3

使用<asp:Hyperlink><td>內,其Visible屬性綁定到其將檢查ShippingNo,如果它代表一個有效的鏈接返回true的表達式。

+0

但是,那麼我將如何顯示沒有鏈接的shippingNo?有些情況下,我們不需要顯示鏈接,但必須顯示數字 – 2010-06-09 13:43:39

+1

然後,您需要一個''和一個'',它們中的每一個都具有可見性屬性ShippingNo的價值。 – Humberto 2010-06-09 13:47:00

+0

你..只是認爲是這樣做,並做它..謝謝 – 2010-06-09 13:47:47

1

你總是可以走老式的路線,而不是使用中繼器,而是內聯代碼,在那裏你可以使用任何你需要的代碼。例如:

<% foreach (SomeObject obj in MyObjectCollection) { %> 
    <td> 
    <% if (obj.SomeProperty == something) { %> 
     <a href="<%= /* build link */ %>">Click Me</a> 
    <% } else { %> 
     Some Text 
    <% } %> 
    </td> 
<% } %> 

這是一種經典的ASP做事方式,但我發現它在某些情況下效果更好。有時用真實代碼做事情比在Repeater或GridView的邊界內工作更容易。

+0

它可能表現更好,CPU明智。隨着代碼的增長,它可能很快就會變得非常糟糕。 – Humberto 2010-06-09 13:59:20

+1

一致認爲它可能是一團糟,但沒有什麼比寫一個大型的GridView有更多花哨的綁定控件,字符串格式,交替行設置以及其他特定於控件的事情更讓我惱火,然後發現一個不可能的小問題解決了,但是使用內聯代碼會很容易。 (好吧,很多事情對我的刺激比以前更多,但這種情況發生在以前,這是一個痛苦的處理)。 – 2010-06-09 14:44:43

0

自己的邏輯封裝在一個User Control,並通過它所需要的參數,以使顯示的決定:

<uc:linkdisplay id="linkdisplay1" runat="server" 
     CdNo='<%#((VWApp.Code.TrackDM)Container.DataItem).CdNo %>' 
     ShippingNo='<%#((VWApp.Code.TrackDM)Container.DataItem).ShippingNo%>' />