本人数据库中的数据有4列,三列数据,一列图片。 本人想在datagridview控件中同时显示,前3列数据,最后一列图片。数据库里的图片是以二进制形式保存的。datagridview控件中显示图片的那列最好是缩略图,然后在图片上添加链接显示原图怎么实现。
解决方案
5
5
还添加链接?又不是从URL获取的网络图片,哪来的链接啊
表格里加个自定义列,格式为image就行了.
表格里加个自定义列,格式为image就行了.
5
5
<asp:GridView ID="d" runat="server" AutoGenerateColumns="False" AutoGenerateColumns="False" DataKeyNames="id" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:BoundField Field="title"/> <asp:BoundField Field="test"/> <asp:TemplateField></asp:TemplateField> </Columns> </asp:GridView> protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { int id = int.Parse(d.DataKeys[e.Row.RowIndex].Value.ToString()); Image img = d.Rows[e.Row.RowIndex].FindControl("img") as Image; if (img != null) { img.ImageUrl = "test.aspx?id="+id; } } } test.aspx.cs 加载事件 //根据id读取图片字段 string str = "server=X;database=X;uid=X;pwd=X"; string sql = "select image from ddd where id="+Request["id"]; SqlConnection con = new SqlConnection(str); con.Open(); SqlCommand cmd = new SqlCommand(sql, con); SqlDataReader sdr = cmd.ExecuteReader(); if (sdr.HasRows) { sdr.Read(); byte[] bytes = (byte[])sdr["pic"]; MemoryStream ms = new MemoryStream(bytes); Bitmap bmp = new Bitmap(30, 30);//缩略图大小 //百度MemoryStream生成验证码返回图片格式 } sdr.Close(); con.Close();
不是什么机密图片搞什么二进制 直接存图片地址不就行了
5
页面
<asp:GridView ID="d" runat="server" AutoGenerateColumns="False" DataKeyNames="id" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:BoundField DataField="id"/> <asp:BoundField DataField="name"/> <asp:TemplateField> <ItemTemplate> <asp:Image ID="img" runat="server" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
5
首先datagridview的列格式是本人随便定义扩展的,你弄个treeview放里面都行。所以,你的问题就很好解决了,你本人扩展一种列出来不就行了,你想里面放个可交互的游戏都行
10
关键就是通过 “test.aspx?id=”+id 这个地址。