首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>.NET2.0>如何在GridView中动态显示数据库中图片的方法
如何在GridView中动态显示数据库中图片的方法
来源: 发布时间:2008-09-27 发布人: 浏览: 人次   字体: [ ]  

       GridView控件中的ImageField没有DataField属性,那么如何才能绑定到SQL Server中的Image Field?自从DynamicImage控件从beta2中消失后,这就成了个问题。但是,ASP.NET2.0随之也给我们带来了另外一种解决方案,那就是方便地利用HttpHandler(.ashx)动态显示数据库中的图片,这点在VS2005中提供了PersonalWebSite等模版中已经给出方案:通过ashx动态获取数据库中的某条图片数据,然后在GridView等控件的自定义模版中安置一个Image控件,并设置Image控件的ImageUrl属性为类似 XXX.ashx?photoId=1 即可显示图片。
<%@ WebHandler Language="C#" Class="GetPicture" %>
using System;
using System.Web;
using System.IO;
using System.Data.SqlClient;

public class GetPicture : IHttpHandler {   
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "image/jpeg";
        context.Response.Cache.SetCacheability(HttpCacheability.Public);
        context.Response.BufferOutput = false;       
        Stream stream = null;

        if (context.Request.QueryString["PhotoID"] != null &&
            context.Request.QueryString["PhotoID"] != "")
        {
            string photoId = context.Request.QueryString["PhotoID"];
            stream = GetPhoto(photoId);
        }
        else
            return;
        const int buffersize = 1024 * 16;
        byte[] buffer = new byte[buffersize];
        if (stream == null || stream.Length < 1)
            return;           
        int count = stream.Read(buffer, 0, buffersize);
        while (count > 0) {
            context.Response.OutputStream.Write(buffer, 0, count);
            count = stream.Read(buffer, 0, buffersize);
        }
    }
   
    public Stream GetPhoto(string fileTypeID){
        SqlConnection myConnection = new SqlConnection("Integrated Security=SSPI;Initial Catalog=WebWindows;Data Source=guosong");
        SqlCommand myCommand = myConnection.CreateCommand();
        myCommand.CommandText = "GetFileTypeIcon";
        myCommand.CommandType = System.Data.CommandType.StoredProcedure;

        myCommand.Parameters.Add(new SqlParameter("@fileTypeID", fileTypeID));
        myConnection.Open();
        object result = myCommand.ExecuteScalar();
       
        try{
            return new MemoryStream((byte[])result);
        }
        catch (ArgumentNullException e){
            return null;
        }
        finally{
            myConnection.Close();
        }
    }
    public bool IsReusable {
        get {
            return false;
        }
    }
}
 
 <asp:TemplateField HeaderText="ICON">
     <ItemTemplate>
      <asp:Image ID="Image1" runat="server" ImageUrl='<%# "GetPicture.ashx?PhotoID=" + Eval("FileTypeID") %>' />
     </ItemTemplate>
 </asp:TemplateField>


相 关 文 章   发布商链接
·如何在GridView控件中为按钮添加相应...
·详解在asp.net1和2中发送电子邮件的...
·实例讲解asp.net备份和恢复sql数据库...
·实例讲解在.net2.0中对config文件的...
·如何让GridView控件支持分页的自动编...
·.net如何将ListViewItem转换为ListVi...
·如何在asp.net中获取GridView隐藏列...
·gridview控件嵌套gridview控件的方法...
·asp.net2.0调用CSS无效的主要原因及...
·在GridView控件中使用DataKeyNames属...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·实例讲解在.net2.0中对config
·包含32种常见的用户输入验证...
·asp.net不使用服务器控件的情
·如何更改单个aspx页面的编码...
·实例讲解如何设置gridview的...
·asp.NET 2.0中引发CSS失效问...
·GridView通过模板列实现第一...
·VS2005利用TreeView控件和递...
·DataView对象获取数据行相应...
·GridView中固定列的两种方法
·为GridView控件添加分页导航...
·Net2.0中使用母版页及其母版...
·实例解决GridView中弹出对话...
·Gridview控件字段内容过长的...
·图解ASP.NET下AJAX安装(VS20...
热 门 文 章
·asp.net(C#)弹出窗口返回值并...
·VS2005利用Excel组件操作Exce...
·AJAX实现无刷新适时显示gridV...
·gridview表头固定并实现打印...
·Js获取radiobuttonlist选中值...
·gridview绑定数据显示的各种...
·ASP.NET中“无法加载 DLL 找...
·asp.net文件下载防止乱码出现...
·asp.net2.0回发或回调参数无...
·实现gridview内容打印功能的...
·ASP.NET多个用户控件回车提交...
·Asp.net页面传递参数的几种方...
·图解ASP.NET下AJAX安装(VS20...
·实例解决GridView中弹出对话...
·如何在asp.net中获取GridView...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .