2012-06-18 31 views
0

我有這樣的XML文件,說(sample.xml中)加載圖像在ASP.NET

<?xml version="1.0" encoding="utf-8" ?> 

<drinks> 
    <drink> 
    <type>Coke </type> 
    <image>some.jpg or (url) </image> 
    <price> $5 </price> 
    </drink> 
    <drink> 
    <type>Pepsi</type> 
    <image>some.jpg or (url) </image> 
    <price> $2 </price> 
    </drink> 
    </drinks> 

我有一個列表框也被綁定到XML文件。

<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True" 
     DataSourceID="XmlDataSource2" DataTextField="drinks/drink/type" Height="198px" Width="181px"> 
    </asp:ListBox> 
    <asp:XmlDataSource ID="XmlDataSource2" runat="server" DataFile="~/XMLFile.xml"> 
    </asp:XmlDataSource> 

我該怎麼做?好了,解釋我的問題清楚了,我想這樣做,產品和圖片鏈接應該從XML文件加載(圖片應該是url'sfrom網)

+1

你的樣品中沒有顯示有關的圖像什麼。 URL是否意味着在XML中? –

+0

是的,他們應該。 – unknownsatan

+0

那麼你如何給我們一個包含你試圖提取的數據的例子?這是毫無意義的給我們XML *沒有*網址。 –

回答

2

有辦法做到這一點,但數您無法列出/顯示typeimageListBox控件。您應該使用GridView/DataList/Repeater綁定XMLDatasource,您可以在其中顯示數據以及圖像。假設<image>標籤包含圖像的相對URL。

<?xml version="1.0" encoding="utf-8" ?> 
<drinks> 
    <drink> 
    <type>Coke </type> 
    <image>~/Images/image1.png</image> 
    <price> $5 </price> 
    </drink> 
    .... 
</drinks> 

和ASP.NET標記是:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="XmlDataSource1"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Label ID="Label1" 
          runat="server" 
          Text='<%# XPath("type") %>'></asp:Label> 
       <asp:Image ID="Image1" 
          runat="server" Height="43px" 
          ImageUrl='<%# XPath("image") %>' 
          Width="35px" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile.xml" 
    XPath="drinks/drink"></asp:XmlDataSource> 

您也可以選擇Linq-XML解析XML文檔並準備匿名或鍵入List<T>

XDocument doc = XDocument.Load(MapPath("~/XMLFile.xml")); 
var result = from ele in doc.Descendants("drink") 
       select new 
       { 
        Type=ele.Element("type").Value, 
        Image=ele.Element("image").Value 
       }; 

GridView1.DataSource = result.ToList(); 
GridView1.DataBind(); 
0
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
DataSourceID="XmlDataSource1"> 
<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:Label ID="Label1" runat="server" Text='<%Eval("name")%>'> 
        </asp:Label>           
     <asp:Image ID="Image1" runat="server" Height="43px" ImageUrl='<%# Eval("image")%>' Width="35px" />  
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns>