将符合条件的纪录填充到dataset中的datatable
.....
myAdapter.Fill(myDataSet,"img");
byte[] BLOBData = new byte[0];
int c = myDataSet.Tables["img"].Rows.Count;

Response.Clear();
Response.ContentType = "image/GIF";

for (int i = 0 ; i < c ; i++)
{
    BLOBData = (byte[])(myDataSet.Tables["img"].Rows[i]["photo"]);
    Response.BinaryWrite( BLOBData );
}符合条件的记录有多条,但只能显示第一条纪录的图片
aspx页面没有放任何控件,代码是在cs文件中写的。
请帮忙看一下,是什么方面的问题

解决方案 »

  1.   

    BLOBData = (byte[])(myDataSet.Tables["img"].Rows[i]["photo"]);
    Response.BinaryWrite( BLOBData );
    ————————————————————————————————你的代码不就是只显示一个图片的吗?
      

  2.   

    (byte[])(myDataSet.Tables["img"].Rows[i]["photo"])中Rows[i]通过变量i读取不同记录。
    如果是后面的把前面的覆盖,那应该显示最后一个,但图片显示的只是第一幅,也就是数据库中符合条件的第一条记录,而并不是最后一条记录。
      

  3.   

    Response.Clear();
    Response.ContentType = "image/GIF";

    for (int i = 0 ; i < c ; i++)
    {
        BLOBData = (byte[])(myDataSet.Tables["img"].Rows[i]["photo"]);
        Response.BinaryWrite( BLOBData );
    }你是把多个图片作为一个"image/GIF"输出
    然而在第一个图片结束时同时输出了结束符号
    所以后面的图片虽然输出了,但不能看到。
      

  4.   

    表用Response.Write啊
    ASP.NET是绝不应该在代码中使用这个函数的
      

  5.   

    数据库中有这么几个字段,我现在要把数据库表中的图片这个字段的读出来显示图片
    查询记录集后得到的
    id           sUserID         bPicData     Datetime
    1             123            <Binary>     2004-2-23
    3             123            <Binary>     2004-2-24
    5             123            <Binary>     2004-2-25
    6             123            <Binary>     2004-2-26
    8             123            <Binary>     2004-2-27
    10            123            <Binary>     2004-2-28现在要循环得到bPicData字段的图片并显示出来。但是这段代码只会显示第一条记录
      

  6.   

    如果是使用Response.BinaryWrite( BLOBData );输出图片,那就只能显示一张图片。
    可以使用DataGrid显示多张图片。
    http://blog.csdn.net/sunnystar365/archive/2005/10/10/498719.aspx
      

  7.   

    前台页面:
    <div align="center"><asp:datagrid id="dgCustomPage" runat="server" HorizontalAlign="Center" CellPadding="4" BackColor="White"
    BorderWidth="1px" BorderStyle="None" BorderColor="MediumBlue" Width="240px" Height="9px" PageSize="1" AllowCustomPaging="True"
    AllowPaging="True" AutoGenerateColumns="False">
    <FooterStyle Font-Bold="True" ForeColor="#C0FFFF" BorderColor="#FFC0C0" BackColor="#FFFF80"></FooterStyle>
    <SelectedItemStyle Font-Bold="True" ForeColor="#CCFF99" BackColor="#009999"></SelectedItemStyle>
    <EditItemStyle VerticalAlign="Middle"></EditItemStyle>
    <ItemStyle ForeColor="#003399" BackColor="White"></ItemStyle>
    <HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="White" VerticalAlign="Middle"
    BackColor="Coral"></HeaderStyle>
    <Columns>
    <asp:TemplateColumn>
    <HeaderTemplate>
    <FONT face="宋体" size="2">这是您现在家里施工情况的图片:</FONT>
    </HeaderTemplate>
    <ItemTemplate>
    <FONT face="宋体">
    <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0" align="center">
    <TR>
    <TD colSpan="2" align="center"><FONT face="宋体" size="2">日期:
    <asp:Label id=lbImageName runat="server" Text='<%# DataBinder.Eval(Container,"DataItem.Pbegdate")%>'>
    </asp:Label></FONT></TD>
    </TR>
    <TR>
    <TD align="center">
    <asp:Image id=Imagebutton1 runat="server" ImageAlign="Middle" ImageUrl='<%# "ReadImage.aspx?ImageID="+DataBinder.Eval(Container,"DataItem.id")%>'>
    </asp:Image></TD>
    <TD align="center"></TD>
    </TR>
    </TABLE>
    </FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    <PagerStyle NextPageText="下一张" Font-Size="Smaller" Font-Bold="True" PrevPageText="上一张" HorizontalAlign="Center"
    ForeColor="Black" BackColor="#80FF80" Mode="NumericPages"></PagerStyle>
    </asp:datagrid></div>
      

  8.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Drawing.Imaging;
    using System.Drawing.Drawing2D;
    using System.Web.Security;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Globalization;namespace demo.test
    {
    /// <summary>
    /// DataGridImage 的摘要说明。
    /// </summary>
    public class DataGridImage : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataGrid dgCustomPage;
    int startIndex=0;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    this.dgCustomPage.DataKeyField="id";
    if(!IsPostBack)
    {

    DataGridDataBind();
    }
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.dgCustomPage.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.dgCustomPage_PageIndexChanged);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    private void DataGridDataBind()//绑定DATAGRID
    {
    SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["RBSSqlServer"].ToString().Trim());
    SqlDataAdapter da = new SqlDataAdapter("select * from [YjCrmProject] where RTrim(Ltrim(Sub_dh))='CYKM2004_03_10_06'",conn);
    DataSet ds = new DataSet();
    if(this.ViewState ["startIndex"]!=null)
    {
    this.startIndex =Convert.ToInt32(this.ViewState["startIndex"].ToString ());
    this.Response .Write (this.startIndex);
    }
    try
    {
    //从指定的索引开始取PageSize条记录
    da.Fill(ds,startIndex,dgCustomPage.PageSize,"CurDataTable");
    //填充数据集
    da.Fill(ds,"AllDataTable");
    //设置DataGrid控件实际要显示的项数
    dgCustomPage.VirtualItemCount = ds.Tables["AllDataTable"].Rows.Count;
    //进行数据绑定
    dgCustomPage.DataSource = ds.Tables["CurDataTable"];
    dgCustomPage.DataBind();

    }
    catch(Exception error)
    {
    Response.Write(error.ToString());
    }
    /*da.Fill(ds,"PPic");
    dgCustomPage.DataSource=ds.Tables["PPic"];
    dgCustomPage.DataBind();
    cn.Close();*/
    } private void dgCustomPage_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    //设置DataGrid当前页的索引值为用户选择的页的索引
    dgCustomPage.CurrentPageIndex = e.NewPageIndex;
    //取得当前页为止总共有多少条记录,以便在下一页就从该记录开始读取
    startIndex = dgCustomPage.PageSize * dgCustomPage.CurrentPageIndex;
    this.ViewState ["startIndex"]=startIndex.ToString ();
    //重新绑定数据
    dgCustomPage.DataBind();
    }
    }
    }
      

  9.   

    ReadImage.aspx文件。前台没有放置任何控件
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Drawing.Imaging;
    using System.Drawing.Drawing2D;
    using System.Web.Security;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Globalization;namespace demo.test
    {
    /// <summary>
    /// ReadImage 的摘要说明。
    /// </summary>
    public class ReadImage : System.Web.UI.Page
    {
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面


    SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["RBSSqlServer"].ToString().Trim());
    string Query = "select * from [YjCrmProject] where id='"+this.Request["ImageID"]+"'";
    SqlCommand myCommand = new SqlCommand(Query, conn);
    myCommand.Connection.Open();
    this.Response.ContentType="image/gif";
    SqlDataReader dr = myCommand.ExecuteReader();
    while(dr.Read())
    {
    this.Response.BinaryWrite((byte[])dr["PPic"]);
    } } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
    }