您可以使用處理器可以顯示在GridView的形象,你的HTML標記看起來像裏面
Gridview ItemTemplate
集圖像控制SRC爲src=~/ShowImage.ashx?id=" + id
其中ShowImage.ashx
是你的處理器,其返回的MemoryStream((字節[])IMG );
這裏我的一個類似的文章如何獲得二進制數據顯示爲圖像
Blog Article: Convert Binary data to image, Save and retrieve image from binary data asp.net c#
在你的情況你的查詢字符串是characterID
讓你的圖片src將src=~/ShowImage.ashx?id=" + characterID
更新答:
HTML標記:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="CharacterID">
<ItemTemplate>
<asp:Label ID="lblid" runat="server" Text='<%# Bind("characterID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="GameLevel">
<ItemTemplate>
<asp:Label ID="lblglevel" runat="server" Text='<%# Bind("gameLevel") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Image">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%#"ShowImage.ashx?getID="+Eval("characterID") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
後面的代碼:
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = getData();
GridView1.DataSource = dt;
GridView1.DataBind();
}
public DataTable getData()
{
SqlDataAdapter dap = new SqlDataAdapter("select characterID,blueBallImage,gameLevel from CorrespondingBall", cn);
DataSet ds = new DataSet();
dap.Fill(ds);
return ds.Tables[0];
}
通用處理器:添加新的通用處理器這裏showIamges.ashx是我的通用處理器
public void ProcessRequest(HttpContext context)
{
Int32 my_Id;
if (context.Request.QueryString["getID"] != null)
{
my_Id = Convert.ToInt32(context.Request.QueryString["getID"]);
context.Response.ContentType = "image/jpeg";
Stream strm = ShowEmpImage(my_Id);
byte[] buffer = new byte[4096];
int byteSeq = strm.Read(buffer, 0, 4096);
while (byteSeq > 0)
{
context.Response.OutputStream.Write(buffer, 0, byteSeq);
byteSeq = strm.Read(buffer, 0, 4096);
}
}
}
public Stream ShowEmpImage(int my_Id)
{
string conn = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlConnection connection = new SqlConnection(conn);
string sql = "select blueBallImage from CorrespondingBall WHERE characterID = @ID";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@ID", my_Id);
connection.Open();
object img = cmd.ExecuteScalar();
return new MemoryStream((byte[])img);
}
嗨Satinder,我想問你一個問題。 @ characterID實際上是什麼?我看到了一些教程,他們在那裏放置了類似@ ID等的東西。請原諒我,因爲我之前沒有使用過處理程序。 –
id reperesnt你想要顯示圖像的哪一行?可能有一些關係,即像employeid ,, empname,employe_image列,所以在gridview你binddata ID,名稱,圖片 –
我仍然無法得到它。如果我想要顯示blueBallImage的每個圖像,該怎麼辦? –