1

こんにちは私はユーザーが特定の車の詳細と車に関連する写真を表示するためのページを設定しようとしています。これまでのところ、SQLテーブルを使用して画像のパスを保持し、各パスを「ImageUrl」属性として手動で作成したimgタグに割り当てています。

私の質問は、画像の数が変わるため、imgタグを動的に作成し、それに応じてテーブル内の関連エンティティの数に応じて「ImageUrl」を割り当てる方法はありますか?これが不可能な場合、誰かが代替案を提供できますか?

Webフォームの他の部分で使用しているスクリプトの種類は、C#、javacript、sqlcommandです。私はこれにかなり慣れていません、そして私の検索はコードビハインドでImageUrlを割り当てる方法を示すだけです、そしてそれは私がしたことです。よろしくお願いします。

これは私がimgタグのために持っているものです:

     <asp:Image ID="Image1" runat="server" ImageUrl="~/Images/Default.png" />

     <asp:Image ID="Image2" runat="server" ImageUrl="~/Images/Default.png" />

そして、これは背後にあるコードです:

      List<string> folder = new List<string>();

        while (readerPhoto.Read())
        {
            folder.Add(readerPhoto["Folder"].ToString());
        }

        switch (folder.Count)
        { 
            case 1:
                Image1.ImageUrl = folder[0];
                break;
            case 2:
                Image1.ImageUrl = folder[0];
                Image2.ImageUrl = folder[1];
       //and so fourth.......

08/07/12。新しい試行コード(画像は動的に作成されますが、「src」属性が正しく割り当てられていません):

   .aspx 
   <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:CarsConnectionString %>"
        SelectCommand="SELECT Folder FROM Cars INNER JOIN Photos ON Cars.SN = Photos.Cars_SN WHERE (Cars.SN = @SN)">
        <SelectParameters>
            <asp:QueryStringParameter DefaultValue="SN" Name="SN" QueryStringField="SN" />
        </SelectParameters>
    </asp:SqlDataSource>
    <asp:ListView ID="lvPhotos" runat="server" DataSourceID="SqlDataSource1">
        <ItemTemplate>
            <asp:Image ID="imgListImage" runat="server" ImageUrl='<% Eval("Folder") %>' />
        </ItemTemplate>
    </asp:ListView>

HTMLは、壊れた画像アイコンとスクリプトを次のように出力します。

   <img id="MainContent_ListView1_imgListImage_0" src="<%%20Eval("Folder")%20%>" style="width: 80px; height: 80px; ">
4

2 に答える 2

2

データバインディングマークアップ構文を使用する必要があります(に注意してください#)。

<ItemTemplate>
    <asp:Image ID="imgListImage" runat="server" ImageUrl='<%# Eval("Folder") %>' />
</ItemTemplate>
于 2012-08-07T18:02:20.270 に答える
1

編集:どういうわけか私はあなたがファイルではなくSQLテーブルを使用していることを見逃しました。編集2:バインディングエラーを修正

基本的に、背後にあるコードはまったく必要ありません。SqlDataSourceとListViewが必要で、2番目を最初のものにバインドします。

.aspx

<asp:SqlDataSource id="SqlDataSource1"
      runat="server"
      ConnectionString="<%$ ConnectionStrings:MyConnString%>"
      SelectCommand="SELECT * FROM Table">
  </asp:SqlDataSource>

<asp:ListView ID="lvImages" runat="server" DataSource="SqlDataSource1">
   <ItemTemplate>
       <asp:Image ID="imgListImage" runat="server" ImageUrl='<%# Eval("Folder") %>' />
   </ItemTemplate>
</asp:ListView>

msdnのListView

于 2012-08-06T23:53:01.180 に答える