如何将任意数量的图像动态添加到源字符串位于数据库中的 Web 窗体

本文关键字:字符串 数据库 窗体 Web 添加 任意数 图像 动态 | 更新日期: 2024-10-31 13:34:17

嗨,我正在尝试为用户设置一个页面,以查看特定汽车的详细信息以及与汽车相关的照片。到目前为止,我正在使用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; ">

如何将任意数量的图像动态添加到源字符串位于数据库中的 Web 窗体

您需要使用数据绑定标记语法(请注意#):

<ItemTemplate>
    <asp:Image ID="imgListImage" runat="server" ImageUrl='<%# Eval("Folder") %>' />
</ItemTemplate>
编辑

:不知何故,我错过了您使用SQL表而不是文件。编辑2:修复了绑定错误

基本上你根本不需要任何代码。您需要 SqlDataSource 和 ListView 并绑定第二个到第一个。

.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 上的列表视图