我要在gridview中读取数据库中以二进制存储的图片,网上找了很多,大部分都是借组一个Handler.ashx文件来读取,方法是从页面把图片ID传到Handler.ashx,然后再打开一次数据库,把图片以二进制读取出来,关闭数据库。我觉得这样假如gridview中有很多条数据,每条记录的图片读取都要去打开关闭数据库一次,怎么看都不合情理。有没有比较权威的做法,我想一次就读取出来。

解决方案 »

  1.   

    GridView行绑定事件里把图片转换成图片绑定给那个图片列
      

  2.   


    什么叫图片转换成图片?帮我改改:<asp:GridView ID="gvImages" runat="server" AutoGenerateColumns="False" >
         <Columns>
              <ItemTemplate>
                 <asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("ImageID")'/>
              </ItemTemplate>
             </asp:TemplateField>
         </Columns>
    </asp:GridView>
      

  3.   


    写在哪里?我的是WEB的,你这个貌似winform的。
      

  4.   

    难道不能直接通过把读取出来的那个Eval(XXX)当成参数调用某某方法?
      

  5.   


    图片是可以一次读取出来,但如何跟gridview的每条记录对上?
      

  6.   

    ID同样读出来,你不是要实现,点击一条ID就显示图片吗?我只是说,图片放在内存中比你连多次数据库的方式要好吧!对应的ID的图片显示
      

  7.   


    我不是点击ID才显示,而是gridview一行中有多个数据,ID啊,名称啊,图片等,他们都要一次性以表形式显示出来。我也不想把图片缓存到内存,一次读取20条出来后就完事,只连接一次数据库。
    过往我是采用存路径到数据库的方法,读取的时候就是一次读取。
      

  8.   

    谁有例子发我也行。[email protected]
      

  9.   

    关键是你根本没有这个“金刚钻”(即没有那个在客户端在处理二进制成图片的能力),所以给个解决方案等于害你钻进死胡同里。如果你只是为了技术而技术,那么找喜欢闭门造车的人,喜欢开发产品的人大概懒得花时间。如果你将客户端技术提高到一定水平,清楚地告诉人你到底如何将大的二进制数据拆解并放入各个图片位置,那么写一个把以对图片打包成一个输出流的handler简直太简单了。
      

  10.   

    结贴之后居然又有了新回答...
    某某方法就是自己定义的某些方法。也就是把XXX当做参数,调用某某方法(XXX),然后这里就可以显示图片了。