2011-05-25 57 views
2

我有一個ListView控件,需要在ItemTemplate中插入一些圖片。如何在ListView控件的ItemTemplate中調用函數

<asp:ListView runat="server" ID="VareListView"> 
<LayoutTemplate> 
    <table cellpadding="2" runat="server" id="tblVarer" style="width:100%;border-collapse:collapse;" > 
    <tr runat="server" id="itemPlaceholder"> 
    </tr> 
</table> 
</LayoutTemplate> 
<ItemTemplate> 
    <tr id="Tr1" style="height:100px" class="tblRow" runat="server" > 
    <td valign="top"> 
    <asp:Image ID="ProduktImage" runat="server" ImageUrl='<%# string.Format("images_produkt/{0}.jpg",Eval("Varenr"))%>' /> 
    </td> 
    <td valign="top" class=""> 
     <asp:Label ID="LastNameLabel" runat="server" Text='<%# Eval("Varenavn1")%>' /> 
     <br /> 
     <asp:Label ID="FirstNameLabel" runat="server" Text='<%# string.Format("Varenr: {0}",Eval("Varenr")) %>' /> 
     <br /> 
     <asp:Label ID="Varenavn2" runat="server" Text='<%#Eval("Varenavn2") %>' /> 
     <br /> 
     <asp:Label ID="Varenavn3" runat="server" Text='<%#Eval("Varenavn3") %>' /> 
     <br /> 

在這一點上,我需要,如果文件名中包含「Varenr」 像這樣的事情

 DirectoryInfo myDir = new DirectoryInfo(Request.PhysicalPath.Substring(0,    Request.PhysicalPath.LastIndexOf("\\")) + "/images_produkt/montering"); 
     FileInfo[] files = myDir.GetFiles(varenr + "*"); 
     if (files.Length != 0) 
     { 
      foreach (FileInfo fil in files) 
      { 
          Image img = new Image(); 
          img.ImageUrl = "/images_produkt/montering/" + fil.Name; 
          img.Height = 20; 
          img.Width = 20; 
      } 
      } 

但我現在downt如何得到這個工作:) 的其餘部分插入圖片ListView的代碼是這樣的

</td> 
    <td valign="top" align="right" class=""> 
     <asp:Panel ID="Enhet" runat="server" Visible='<%#Eval("Enhet").ToString() != String.Empty %>'> 
      <asp:Label ID="Pris" runat="server" Text='<%# string.Format("{0} kr",Eval("Pris2"))%>' /> 
      <br /> 
     </asp:Panel> 
     <asp:Label ID="Vekt" runat="server" Text='<%# string.Format("{0} Kg",Eval("Vekt"))%>' /> 
     <br /> 
     <asp:TextBox ID="Antall" runat="server" Text="1" Width="20"></asp:TextBox> 
     <asp:Image ID="Image1" runat="server" ImageUrl='style/shoping01.jpg' Width="22" Height="22" /> 
    </td> 
</tr> 

回答

2

使用ItemDataBound事件並將PlaceHolder控件放置在您想要插入圖像的位置,在您的ItemDataBound事件中查找佔位符控件並動態添加圖像,您的代碼應該像這樣。

protected void yourdatalist_ItemDataBound(object sender, DataListItemEventArgs e) 
{ 
    var placeHolder = (PlaceHolder)e.Item.FindControl("YourPlaceholderIdHere") 

    //do what you want 
    placeHolder.Controls.Add(your images) 
} 

我還沒有測試過,但希望能給你和想法。

如果你想在HTML中你可以嵌套一個DataList更多的控制和assing它的數據源

例如

<asp:DataList ID="nestedImages" runat="server" 
     DataSource="<%# GetDataSourceForImages(((ListViewItem)Container).DataItem) %>" > 
    <ItemTemplate> 
     your html here 
    </ItemTemplate> 

GetDataSourceForImages是一個受保護的方法做你想做的,並返回將用作數據源列表,你必須細化,當然這一點。

希望它有幫助

0

您可以從ListView控件處理ItemDataBound事件。在事件處理程序中,檢查數據項並適當修改內容。

相關問題