0

たとえば、この XML ファイル (Sample.xml) があります。

<?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ファイルからロードする必要があります(画像はWebからのURLである必要があります)

4

2 に答える 2

2

これを行うにはいくつかの方法がありますが、リスト/表示することはできず、type制御することはできません。GridView/DataList/Repeater を使用して、画像と共にデータを表示できる XMLDatasource をバインドする必要があります。imageListBox

<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-XMLXML ドキュメントを解析し、匿名または型付きを準備するために を選択することもできます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();
于 2012-06-19T02:21:26.737 に答える
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>

于 2015-12-31T07:34:26.693 に答える