C#如何将数据库中的数据和图片同时显示在datagridview控件中。windows form的.

时间:2022-08-30 23:09:57
我数据库中的数据有4列,三列数据,一列图片。 我想在datagridview控件中同时显示,前3列数据,最后一列图片。数据库里的图片是以二进制形式保存的。datagridview控件中显示图片的那列最好是缩略图,然后在图片上添加链接显示原图怎样实现。

13 个解决方案

#2


还添加链接?又不是从URL获取的网络图片,哪来的链接啊
表格里加个自定义列,格式为image就行了.

#3


怎么将我的数据库中的图片列和自定义的列绑定啊,我数据库里面是4列,要求datagridview控件中也是4列不能有多余的列。
有没有什么办法点击缩略图,能让图片放大呢?

#4


#5


怎么将我的数据库中的图片列和自定义的列绑定啊,
可以给几行关键的代码,我很多代码看不懂。。。

#6



<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();

不是什么机密图片搞什么二进制 直接存图片地址不就行了

#7


页面

<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>

#8


首先datagridview的列格式是自己随便定义扩展的,你弄个treeview放里面都行。所以,你的问题就很好解决了,你自己扩展一种列出来不就行了,你想里面放个可交互的游戏都行

#9


C#如何将数据库中的数据和图片同时显示在datagridview控件中。windows form的.
前面四列是数据库中的,直接通过dataGridView1.DataSource绑定的,最后一列是自己添加的,DataGridViewImageColumn Imange = new DataGridViewImageColumn();设置了这个属性Imange.ImageLayout = DataGridViewImageCellLayout.Zoom;
要怎样才能把从数据库读取出来的图片那列,也像最后一列这样显示成小图标。

#10


引用 5 楼 huier513 的回复:
怎么将我的数据库中的图片列和自定义的列绑定啊,
可以给几行关键的代码,我很多代码看不懂。。。


关键就是通过 "test.aspx?id="+id  这个地址。

#11


学习了,一直都是存的图片的路径

#12


该回复于2015-06-05 09:57:03被管理员删除

#13


怎么把图片存进数据库啊?

#1


#2


还添加链接?又不是从URL获取的网络图片,哪来的链接啊
表格里加个自定义列,格式为image就行了.

#3


怎么将我的数据库中的图片列和自定义的列绑定啊,我数据库里面是4列,要求datagridview控件中也是4列不能有多余的列。
有没有什么办法点击缩略图,能让图片放大呢?

#4


#5


怎么将我的数据库中的图片列和自定义的列绑定啊,
可以给几行关键的代码,我很多代码看不懂。。。

#6



<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();

不是什么机密图片搞什么二进制 直接存图片地址不就行了

#7


页面

<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>

#8


首先datagridview的列格式是自己随便定义扩展的,你弄个treeview放里面都行。所以,你的问题就很好解决了,你自己扩展一种列出来不就行了,你想里面放个可交互的游戏都行

#9


C#如何将数据库中的数据和图片同时显示在datagridview控件中。windows form的.
前面四列是数据库中的,直接通过dataGridView1.DataSource绑定的,最后一列是自己添加的,DataGridViewImageColumn Imange = new DataGridViewImageColumn();设置了这个属性Imange.ImageLayout = DataGridViewImageCellLayout.Zoom;
要怎样才能把从数据库读取出来的图片那列,也像最后一列这样显示成小图标。

#10


引用 5 楼 huier513 的回复:
怎么将我的数据库中的图片列和自定义的列绑定啊,
可以给几行关键的代码,我很多代码看不懂。。。


关键就是通过 "test.aspx?id="+id  这个地址。

#11


学习了,一直都是存的图片的路径

#12


该回复于2015-06-05 09:57:03被管理员删除

#13


怎么把图片存进数据库啊?