【问题标题】:How to display comma separated images in DataList in Asp.Net?如何在 Asp.Net 的 DataList 中显示逗号分隔的图像?
【发布时间】:2017-06-12 06:42:18
【问题描述】:

我正在开发 asp.net c# 应用程序,因为我有一个场景,用于在 DataList 中显示逗号分隔的图像,如下面的图像名称 在 image_url 字段中

tmp_IMG_20170522_0837451077517149.jpg, tmp_IMG_20170522_083635-993558832.jpg, tmp_IMG_20170522_083327-596532566.jpg,tmp_IMG_20170522_0839271082156791.jpg, tmp_IMG_20170522_092501-744906076.jpg, tmp_IMG_20170522_084036-2041074160.jpg, tmp_IMG_20170522_091330-34718281.jpg, tmp_IMG_20170522_092627-1388224780.jpg, tmp_IMG_20170522_082648-859515701.jpg,tmp_IMG_20170522_083853-597136928.jpg

假设该字段只有一个图像名称意味着它将显示在DataList中,

但我不知道如何在 DataList 中显示逗号分隔的图像, 请任何需要帮助的人。

Asp.Net:

<asp:DataList ID="DLImages" RepeatColumns="2" runat="server">
  <ItemTemplate>
     <div id='gallery'>
        <a href='<%# Eval("image_url","../Uploads/App_Images/{0}")%>'>
          <img src='<%# Eval("image_url","../Uploads/App_Images/{0}") %>' width="200" height="200" />
        </a>
     </div>
 </ItemTemplate>
</asp:DataList>

C#:

private void FillDataList()
    {
        try
        {
            bolImages.ID=Convert.ToInt32(Request.QueryString["ID"].ToString());
            DataSet dsImages = new DataSet();
            dsImages = bolImages.SelectImagesByID();

            if (dsImages.Tables[0].Rows.Count > 0)
            {
                DLImages.DataSource = dsImages;
                DLImages.DataBind();
            }
            else
            {

            }
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(this, GetType(), "Error Message", "alert('" + ex.Message.ToString() + "')", true);
        }
    }

查询:

public DataSet SelectImagesByID()
    {
        try
        {
         Squery = @"select image_url from BMTEST..Images WHERE ID='" + ID + "';
         return dal.DBRead(Squery);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

示例:

如果image_url如下,则显示一张图片:

tmp_IMG_20170522_0837451077517149.jpg

但是如果是多个逗号分隔的图像如何显示。

tmp_IMG_20170522_083327-596532566.jpg,tmp_IMG_20170522_0839271082156791.jpg

【问题讨论】:

    标签: c# asp.net image datalist


    【解决方案1】:

    你能不能试试这样,让我知道它是怎么来的:

    <div id='gallery'>
        <a href='<%# string.Format("../Uploads/App_Images/{0}", Eval("image_url"))%>'>
             <img src='<%# string.Format("../Uploads/App_Images/{0}", Eval("image_url"))%>' width="200" height="200" />
         </a>
    </div>
    

    根据评论,很明显该行包含逗号分隔值,您需要这些值作为数据源而不是行,因此您需要做的是更改 DataSource,如下所示:

    if (dsImages.Tables[0].Rows.Count > 0)
    {
        int rowNumber = 0;
        DLImages.DataSource = dsImages.Tables[0][rowNumber]["image_url"].Split(',').ToList();
        DLImages.DataBind();
    }
    

    【讨论】:

    • 图像未显示@un-Lucky,它只显示空白,就像图像路径中没有图像一样。
    • @Surya:您能否检查这些元素并检查路径是否正确显示?如果没有进行必要的更改以指向正确的路径
    • 您好先生,我再次检查,图像路径是正确的。但它总是像以前的错误一样显示,如果一个图像意味着它显示,但多个它没有显示。像这样:68.media.tumblr.com/78b9eb663c155ba7f5ebdf91d4b8e705/…
    • @Surya:在上面提到的情况下(错误图片)你能检查并分享href的值
    【解决方案2】:

    试试这个:

            dsImages = bolImages.SelectImagesByID();
    
            if (dsImages.Tables[0].Rows.Count > 0)
            {
    
                string[] values = dsImages.Split(',');
                for (int i = 0; i < values.Length; i++)
                {
                  values[i] = values[i].Trim();
                }
                var newdsImages = values.ToList();
                DLImages.DataSource = newdsImages ;
                DLImages.DataBind();
            }
    

    【讨论】:

      【解决方案3】:

      我认为您需要先拆分逗号分隔的图像路径,然后再将它们加载到数据集

      DLImages.DataSource = dsImages;
      

      这里 dsImages 应该类似于

      dsImages.Split[','];
      

      【讨论】:

      • 嗨@Znaneswar dsImages.Split[','];在数据集中不被接受
      • 我认为在视图代码中它是可能的,因为所有图像路径都进入 href 路径中,并且在视图中循环逗号分隔的 url 是更好的主意
      • 嗨@Znaneswar,我不知道如何实现你所说的,如果你有任何代码请附上。
      【解决方案4】:
      if (dsImages.Tables[0].Rows.Count > 0)
                  {
                      var filelists = dsImages.Tables[0].Rows[0]["image_url"].ToString().Split(',').ToList();
                      List<string[]> imagelist = new List<string[]>();
                      List<string[]> videolist = new List<string[]>();
                      if (filelists.Count >= 0)
                      {
                          for (int i = 0; i < filelists.Count; i++)
                          {
                              string FileName = filelists[i].ToString();
                              string Extension = Path.GetExtension(FileName);
      
                              if (Extension == ".jpg" || Extension == ".JPG" || Extension == ".jpeg" || Extension == ".JPEG" ||
                                 Extension == ".gif" || Extension == ".GIF" || Extension == ".png" || Extension == ".PNG" ||
                                 Extension == ".tiff" || Extension == ".TIFF" || Extension == ".bmp" || Extension == ".BMP")
                              {
                                  imagelist.Add(new string[] { filelists[i].ToString() });
                              }
                              else
                              {
                                  videolist.Add(new string[] { filelists[i].ToString() });
                              }
                          }
      
                          DataTable dtImages = ConvertListToDataTable(imagelist);
                          DLImages.DataSource = dtImages;
                          DLImages.DataBind();
      
                          DataTable dtVideo = ConvertListToDataTable(videolist);
                          DLVideos.DataSource = dtVideo;
                          DLVideos.DataBind();
      
                      }                    
                  }
                  else
                  {
      
                  }
      
      
      
      
      static DataTable ConvertListToDataTable(List<string[]> list)
          {
              // New table.
              DataTable table = new DataTable();
      
              // Get max columns.
              int columns = 0;
              foreach (var array in list)
              {
                  if (array.Length > columns)
                  {
                      columns = array.Length;
                  }
              }
      
              // Add columns.
              for (int i = 0; i < columns; i++)
              {
                  table.Columns.Add();
              }
      
              // Add rows.
              foreach (var array in list)
              {
                  table.Rows.Add(array);
              }
      
              return table;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-04
        • 2013-05-31
        • 1970-01-01
        • 1970-01-01
        • 2016-07-12
        • 1970-01-01
        • 2020-05-21
        相关资源
        最近更新 更多