2013-06-05 67 views
0

我有asp.net Gridview控件,在这里我将显示两列之一是文本字段,另一个是图像字段。网格应该是可扩展的,并应显示所有图像。当我运行页面时,所有行图像都显示相同的图像。如何解决这个问题?如何在sqlview中显示GridView中的多行图像

![网格视图结果] [1]

我已经使用了Imagehandler文件

 SqlConnection conn = new SqlConnection(connString); 
    string sqlsts = "SELECT us.name, us.image from userdetails as us where us.user_id in (select user_id from user_team where team_id in (select team_id from teaminfo where teamname='" + team + "'))"; 
    SqlCommand command = new SqlCommand(sqlsts, conn); 
    conn.Open(); 
    DataTable dtst = new DataTable(); 
    SqlDataAdapter adp = new SqlDataAdapter(sqlsts, conn); 
    adp.Fill(dtst); 
    int roc = dtst.Rows.Count; 
    int coc = dtst.Columns.Count; 
    for (int i = 0; i < roc; i++) 
    { 
     Byte[] imageData = (Byte[])dtst.Rows[i]["image"]; 
     context.Response.BinaryWrite((Byte[])dtst.Rows[i]["image"]); 
     context.Response.ContentType = "image/jpeg"; 
     context.Response.End(); 
     } 

回答

0

你的处理器,虽然经过一个循环中运行,将只返回它后面的第一个图像。

通过调用这些行....:

 context.Response.BinaryWrite((Byte[])dtst.Rows[i]["image"]); 
    context.Response.ContentType = "image/jpeg"; 
    context.Response.End(); 

.....你基本上是说“好了,你现在可以停下来,吐出的形象” - 中环赢得你的其他图片”达不到。

你的处理程序应该只返回一个单一的图像。

因此,改变你的处理程序,所以它只提供一个图像,你可以把你想显示在查询字符串中的图像的ID,然后从你的gridview调用处理程序。

喜欢的东西(例如,未测试)

<asp:TemplateField HeaderText="MyImage"> 
    <ItemTemplate> 
     <asp:Image runat="server" ImageURL='<%# Eval("imageID", "myHandler.ashx?id={0}") %>' /> 
    </ItemTemplate> 
    </asp:TemplateField> 

你的处理函数目前可以得到id查询字符串,从数据库中选择相应的图像,然后Response.BinaryWrite()它。