簡體   English   中英

在ItemTemplate中使用Container.DataItem

[英]Use of Container.DataItem in an ItemTemplate

我無法讓這個工作,我無法弄清楚為什么。

<ItemTemplate>
<% if (Field(((DataRowView)(Container.DataItem)), "Video File")  != "") {  %> 
<a href='upload/images/<%# Field(((DataRowView)(Container.DataItem)), "Video File")%>'>Download Link</a>
<% } else {  %>
<embed height="14" width="661" name="plugin" src="<%# ContentUploadURL%>/<%# Field(((DataRowView)(Container.DataItem)), "Audio File")%>" type="audio/mpeg" autostart="false" />
<% } %>
</ItemTemplate>

看起來很簡單,但我得到這個錯誤:

編譯器錯誤消息:CS0103:當前上下文中不存在名稱“Container”

我整天都在這里,而且我是一個在asp中使用CMS的新手。 我真的不想學習ASP,只是為了讓這一件事有用。

如果有人能指出我正確的方向,我將非常感激。

謝謝!

您不能在數據綁定表達式<%#...%>之外使用Container.DataItem。

我建議你把代碼改成這樣的東西(對不起,但我目前無法測試):

<ItemTemplate>
  <asp:HyperLink runat="server"
    Visible='<%# Eval("Video File") != "" %>'
    NavigateUrl='<%# Eval("Video File")' Text="Download Link" />

  <embed runat="server" Visible='<%# Eval("Video File") == "" %>'
    height="14" width="661" name="plugin"
    src="<%# ContentUploadURL%>/<%# Field(((DataRowView)(Container.DataItem)), "Audio File")%>"
    type="audio/mpeg" autostart="false" />
</ItemTemplate>

關鍵是根據數據項的“視頻文件”字段設置兩個控件的Visible屬性。

另見這個問題: ASP.Net條件數據綁定

哦謝謝! 這肯定有幫助。 好的,所以我實際上需要一些更多的html,所以我嘗試了你指向我的占位符技術。

所以,我現在有這個:

<asp:PlaceHolder id="PlaceHolder1" runat="server" Visible='<%# Eval("Video File") != "" %>'>
Video Stuff
</asp:PlaceHolder>

<asp:PlaceHolder id="PlaceHolder2" runat="server" Visible='<%# Eval("Video File") == "" %>'>
Audio Stuff
</asp:PlaceHolder>

它幾乎可以工作,除了視頻文件在兩個實例上都可見,它只應該是第一個。

我也試過這個:

<asp:PlaceHolder id="PlaceHolder1" runat="server" Visible='<%# Eval("Video File") != "" %>'>
    Video Stuff
    </asp:PlaceHolder>

<asp:PlaceHolder id="PlaceHolder2" runat="server" Visible='<%# Eval("Audio File") != "" %>'>
    Audio Stuff
    </asp:PlaceHolder>

但這使兩者都顯示出來。 我覺得它幾乎就在那里。

謝謝!

哦,沒關系,我明白了!

這終於奏效了:

    <asp:PlaceHolder id="PlaceHolder1" runat="server" 
     Visible='<%# Field(((DataRowView)(Container.DataItem)), "Video File") != "" %>'>
    Video Stuff
    </asp:PlaceHolder>

    <asp:PlaceHolder id="PlaceHolder2" runat="server" 
     Visible='<%# Field(((DataRowView)(Container.DataItem)), "Video File") == "" %>'>
    Audio Stuff
    </asp:PlaceHolder>

太感謝你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM