这是一个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的朋友多交流
[Web开发]VS2005发布网站与生成网站的区别 [聊天工具]新浪UC2005III正式版发布 [聊天工具]新浪UC2005III Beta2新鲜试用__天极Yesky [聊天工具]新浪UC2005III Beta2新功能介绍__天极Yesky [聊天工具]UC2005III Beta2发布 主界面重新设计__天极Yesky [聊天工具]新浪UC2005III Beta1新功能介绍__天极Yesky [聊天工具]最精简的QQ2005:只用最核心的几个文件 [聊天工具]腾讯QQ2005 Beta3珊瑚虫版 v3.2发布__天极Yesky [聊天工具]体验UC2005III新版超级视频、多视频聊天室 [聊天工具]QQ2005Beta3常见问题解答(下)
|