继续写一点对ASP.NET 2005 中 gridview的理解和使用方法
继续写一点对ASP.NET 2005 中 gridview的理解和使用方法

这是一个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
Response.TransmitFile(Server.MapPath('noimage.jpg'))
End Try
End Sub
End Class
包含Gridview控件的页面中对Gridview的声明
<asp:GridView ID='GridView1' runat='server' AllowPaging='True' AllowSorting='True' AutoGenerateColumns='False' CellPadding='4' DataSourceID='SqlDataSource_User' ForeColor='#333333' Width='700px' DataKeyNames='username' EmptyDataText='没有用户信息' Font-Size='Small' PageSize='8' BorderStyle='Dotted' BorderWidth='1px' >
<FooterStyle BackColor='#507CD1' Font-Bold='True' ForeColor='White' />
<Columns>
<asp:BoundField DataField='USERNAME' HeaderText='用户名' SortExpression='USERNAME' ReadOnly='True'>
<ItemStyle HorizontalAlign='Center' />
</asp:BoundField>
<asp:BoundField DataField='DUTY' HeaderText='单位' SortExpression='DUTY'>
<ItemStyle HorizontalAlign='Center' />
</asp:BoundField>
<asp:BoundField DataField='NOTES' HeaderText='姓名' SortExpression='NOTES'>
<ItemStyle HorizontalAlign='Center' />
</asp:BoundField>
<asp:BoundField DataField='PASSWORD' HeaderText='密码' SortExpression='PASSWORD'>
<ItemStyle HorizontalAlign='Center' />
</asp:BoundField>
<asp:ImageField DataImageUrlField='username' DataImageUrlFormatString='getimage.aspx?username={0}'
HeaderText='签名' ReadOnly='True'>
<ControlStyle Width='150px' />
<ItemStyle HorizontalAlign='Center' VerticalAlign='Middle' />
</asp:ImageField>
<asp:CommandField ButtonType='Button' ShowEditButton='True'>
<ItemStyle HorizontalAlign='Center' />
</asp:CommandField>
<asp:CommandField ButtonType='Button' ShowDeleteButton='True' />
</Columns>
<RowStyle BackColor='#EFF3FB' />
<EditRowStyle BackColor='Lime' BorderWidth='1px' />
<SelectedRowStyle BackColor='#D1DDF1' Font-Bold='True' ForeColor='#333333' />
<PagerStyle BackColor='#2461BF' ForeColor='White' HorizontalAlign='Center' />
<HeaderStyle BackColor='#507CD1' Font-Bold='True' ForeColor='White' />
<AlternatingRowStyle BackColor='White' />
</asp:GridView>
以上涉及到的两个aspx文件必须放在同一目录,本例使用的oracle数据库。
asp.net 2 让我有一中越用越爽的感觉,操作数据库成了很愉快的事~~~
希望能和研究asp.net 2的朋友多交流