这是一个gridview其中的两行,前4列均为文本字段,如用户名、中文名、密码等,第5列是oracle数据库中存储的longrow字段,放的是用户签名扫描图象,用于系统中的电子签名,今天要说的是如何在gridview中显示数据库中的大对象图象(如上图中的中文签名)。
我最初的思路是gridview中有响应读取并显示图象的field类型,没错,的确有一个imagefield,但是该字段类型是接受一个图象URL的,但我要做的是将数据库中的图象数据动态获取,并且动态显示在gridview中,因为曾经对asp比较熟悉,并用asp完成过类似任务。所以习惯性的使用了以前的编程经验,说一下思路,首先创建包含gridview的页面,与相应的datasource控件绑定后,gridview只生成除大对象字段以外的其他列,所以要手动加一个imagefield进来,用于显示签名图象,假定表中的签名图象字段名为qm,则把imagefield的DataImageUrlField设置为USERNAME(与该字段绑定),USERNAME为主键,DataImageUrlFormatString设置为getimage.aspx?username={0},gridview设置完毕,新建一个web窗体为getimage.aspx,该文件用于根据username获取签名图象,并用Response.BinaryWrite方法输出。
代码列举如下:
getimage.aspx
Imports System.Data.OracleClient
Partial Class getimage
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim username As String
username = Request("username")
Dim conn As OracleConnection
Dim cmd As OracleCommand
Dim ConnectionStringSettings As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("OP_ConnectionString")
'Response.Write(ConnectionStringSettings.ConnectionString)
conn = New OracleConnection(ConnectionStringSettings.ConnectionString)
cmd = New OracleCommand
With cmd
.Connection = conn
.CommandText = "select qm from user where username=:username"
.Parameters.Add("username", OracleType.VarChar).Value = username
End With
Dim image() As Byte
Try
With cmd
.Connection.Open()
image = .ExecuteScalar()
.Connection.Close()
Response.BinaryWrite(image)
End With
Catch ex As Exception
R
| 对此文章发表了评论 |

