0

我正在一个在 N Tire 应用程序中设计的项目中工作。在项目内部,我的页面中有一个转发器控件。我有一个锚标签&里面我称之为图像。代码如下..

<a id="ancher" runat="server" rel="example_group" title="">
<asp:Image ID="imgvideo" runat="server" width="90" height="80" border="1" />
</a>

在我从数据库调用的 DAL 内部。

在数据库中,我有 15 个列,其中包含一个主键和一个外键、10 个图像列、当前日期、视频等。所有 10 个图像都是从一个 id 调用的。

当我从后面的代码中调用这些图像时,它只显示 1 张图像,这是数据库中的第 10 位。它拍摄最后一张图像并仅显示该图像。

中继器内的代码如下..

DataTable dt = new DataTable();
DAL.DAL_UploadImgVideo obj = new DAL_UploadImgVideo();
dt = obj.ImgVideoFetchDetails(ID);
  if (dt.Rows.Count > 0)
    {
       for (int i = 2; i < dt.Columns.Count - 3; i++)
          {
            Image M1 = new Image();
            M1 = ((Image)e.Item.FindControl("imgvideo"));
            string Cname = dt.Columns[i].ToString();
            string FImg = dt.Rows[0][Cname].ToString();
            M1.ImageUrl = "JO_Images/UpdImgVideo/" + FImg.ToString();
          }
    }

在循环内部,它会抛出并仅显示最后一张图像,因为它从单个数据库 ID 调用。

因此,任何人都建议我如何更改代码并从单个数据库 id 获取转发器控件中的所有 10 个图像。

4

1 回答 1

0

我认为您可以将 Literal 放入您的中继器而不是 Image 控件。

<asp:Literal ID="ltrImage" runat="server">
DataTable dt = new DataTable();
DAL.DAL_UploadImgVideo obj = new DAL_UploadImgVideo();
dt = obj.ImgVideoFetchDetails(ID);
if (dt.Rows.Count > 0)
{
    var imgFormat = "<image src='JO_Images/UpdImgVideo/{0}' />";
    var imgStr = new StringBuilder();
    for (int i = 2; i < dt.Columns.Count - 3; i++)
    {
        string Cname = dt.Columns[i].ToString();
        string FImg = dt.Rows[0][Cname].ToString();
        imgStr.Append(string.Format(imgFormat, Fimg));
    }
    var ltrImg = ((Literal)e.Item.FindControl("ltrImage"));
    ltrImg.Text = imgStr.ToString();
}
于 2013-11-13T07:58:30.230 回答