电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> 数据库
ADO.NET数据库实例教程(二)-.NET教程,数据库应用
作者:网友供稿 点击:64
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
四、数据显示和修改

  这一章我们将学习怎样显示数据,喜欢偷懒的你可以从拷贝以下代码开始:

<%@ page language="vb" debug="true" %>

<%@ import namespace="system.data" %>
<%@ import namespace="system.data.oledb" %>
<script language="vb" runat="server">
sub page_load(sender as object, e as eventargs)

dim objconn as new oledbconnection("provider=microsoft.jet.oledb.4.0; data source=e:\sff\site\db\test.mdb")
objconn.open()

dim ds as dataset = new dataset()
dim objadapter as new oledbdataadapter("select * from users", objconn)
dim objcmdbld as new oledbcommandbuilder(objadapter)

objadapter.fill(ds, "users")

  repeater

  repeater是一个根据面板循环显示数据的控件。

  itemtemplate:数据主要在这里显示

  alternativeitemtemplate:利用它可以应用交替的样式;

  headertemplate:头格式;

  separatortemplate:分隔数据列;

  footertemplate:脚格式

  databind()

  databind()将数据与页面控件绑定:

repeater1.datasource = ds.tables("users").defaultview
databind()

  以上代码将数据绑定到repeater,如果没有绑定,数据不会显示。

  其他代码

  以下是举例的其他代码:

rpt.datasource = ds.tables("users").defaultview
databind()
end sub
</script>
<html><body><font face="arial" size="2">
<asp:repeater id="rpt" runat="server">

<headertemplate>
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td bgcolor="#6699ff" width="25%">last name</td>
<td bgcolor="#6699ff" width="25%">first name</td>
</tr>
</headertemplate>

<itemtemplate>
<tr>
<td>
<%# container.dataitem("lname") %>
</td><td>
<%# container.dataitem("fname") %>
</td>
</tr>
</itemtemplate>

<footertemplate>
</table>
</footertemplate>

</asp:repeater>
</font></body></html>

  说明:

  一、 设置了repeater的datasource;

  二、 绑定数据到repeater;

  三、 repeater数据控件开始;

  四、 headtemplate定义repeater的头信息;

  五、 itemtemplate定义具体数据填充;

  六、 footertemplate定义repeater脚信息;
  datalist

  datalist和repeater有点相似,和repeater不同的是,datalist可以编辑数据。可以和repeater一样使用template,但是它具有两点不同:

   selecteditemtemplate:显示选择的列;

   edititemtemplate:显示要编辑的列;

  以下是一个使用datalist的简单举例:

dl.datasource = ds.tables("users").defaultview
databind()
end sub
sub dl_itemcommand(sender as object, e as datalistcommandeventargs)
dl.selectedindex = e.item.itemindex
dl.databind()
end sub
</script>

<html><body><font face="arial" size="2"><form runat="server">
<asp:datalist id="dl" runat="server"
headerstyle-backcolor="#6699ff"
selecteditemstyle-backcolor="#6666ff"
selecteditemstyle-forecolor="#ffffff"
repeatlayout = "table"
repeatdirection = "vertical"
datakeyfield = "id"
onitemcommand="dl_itemcommand">

<headertemplate>
last name, click for full name.
</headertemplate>

<itemtemplate>
<asp:linkbutton id="b1" runat="server" text=<%# container.dataitem("lname") %> commandname = "select" />
<br>
</itemtemplate>

<selecteditemtemplate>
<%# container.dataitem("lname") & ", " & container.dataitem("fname") %>
<br>
</selecteditemtemplate>
</asp:datalist>
</form></font>
</body>
</html>

  说明:

  一、 绑定数据以后,建立了一个过程;

  二、 将datalist放入form中,因为在以下的步骤中要求根据选择列刷新页面;

  三、 接着定义了一些数据显示格式;

  四、 headertemplate:datalist头信息;

  五、 itemtemplate:加入链接,定义事件;

  六、 selecteditemtemplate:显示first 和 last name;

  datagrid

  可能它是功能最强大的控件,不管简单还是复杂它都可以实现。

  和itemtemplate不同,datagrid有不同类型的列:

   bound columns:datagird默认列显示方式;

   button columns:按钮列;

   edit command column:可以编辑的列;

   hyperlink column :带连接的列;

   templated column :自定义列显示;

dg.datasource = ds.tables("users").defaultview
databind()
end sub
</script>

<asp:datagrid id="dg" runat="server" />
以上代码很简单,就是绑定数据。
dg.datasource = ds.tables("users").defaultview
databind()
end sub
</script>

<asp:datagrid id="dg" runat="server"
bordercolor="black"
gridlines="vertical"
cellpadding="3"
cellspacing="1"
width="50%"
font-names="arial"
font-size="10pt"
headerstyle-backcolor="#6699ff"
alternatingitemstyle-backcolor="#6666ff"
autogeneratecolumns="false">
<columns>

<asp:boundcolumn headertext="id" datafield="id" />

<asp:templatecolumn headertext="name">
<itemtemplate>
<asp:label id="name" runat="server" text=<%# container.dataitem("fname") & " " & container.dataitem("lname") %> />
</itemtemplate>
</asp:templatecolumn>

</columns>

</asp:datagrid>


  可能有一点复杂,我们看说明:

  一、 绑定数据以后,设置了一些dataset显示效果,包括字体、表宽、头信息背景颜色、交替背景颜色、是否自动生成数据表等;

  二、 加入一个自定义格式列,该列名为name,由字段fname和lname组成;

  现在才刚刚开始

  可能现在你还没有感受到dataset的好处,以后的章节我们将学习怎样编辑数据。

  五、理解datagrid

  数据放入datagrid以后,除了一般的显示以外,我们还需要对这些数据进行编辑、修改。看了前几个章节你可能认为datagrid比较简单,数据处理也比较方便。其实,如果需要真正做一个应用,我们会发现前面的知识还远远不够。以下所用的数据库和前面的章节完全相同,一些设置我们可以参考前面章节。我们先来看代码:

<%@ page language="vb" debug="true" %>
<%@ import namespace="system.data" %>
<%@ import namespace="system.data.oledb" %>
<script language="vb" runat="server">
dim objconn as new oledbconnection("provider=microsoft.jet.oledb.4.0; data source=e:\sff\site\db\test.mdb")
dim ds as dataset = new dataset()
dim objadapter as new oledbdataadapter("select * from users", objconn)

sub page_load(sender as object, e as eventargs)
objconn.open()
objadapter.fill(ds, "users")
dg.datasource = ds
dg.datamember = "users"
if not page.ispostback then
dg.databind()
end if
end sub

sub dg_edit(sender as object, e as datagridcommandeventargs)
dg.edititemindex = -1
dg.databind()
end sub

sub dg_cancel(sender as object, e as datagridcommandeventargs)
dg.edititemindex = -1
dg.databind()
end sub
</script>

  以上程序代码很简单直接,我们应该都可以看懂。只是需要注意page_load的对数据绑定的处理,在几乎所有的数据库程序中,我们都使用这种方式处理数据绑定,所以,这个处理方式一定要牢记。以上是数据连接和事件处理部分,现在我们看datagrid部分。

  自定义datagrid

  以下代码演示了自定义datagrid的实现,在实际应用中,我们基本都是这样使用datagrid,以下代码很有典型性,可以作为一个好的参考。

<form runat="server">
<asp:datagrid id="dg" runat="server"
bordercolor="black"
gridlines="vertical"
font-names="arial"
font-size="10pt"
headerstyle-backcolor="#ffcc00" 表格头信息
itemstyle-backcolor="#ffcc66" 每行背景色
alternatingitemstyle-backcolor="#ffffff" 交替背景色
autogeneratecolumns="false" 自定义每行
oneditcommand="dg_edit" 以下三个事件处理
oncancelcommand="dg_cancel"
onupdatecommand="dg_update">

自定义每行显示
<columns>
<asp:boundcolumn readonly="true" headertext="id" datafield="auto" />
<asp:boundcolumn headertext="first name" datafield="number1" />
<asp:boundcolumn headertext="last name" datafield="number2" />
<asp:editcommandcolumn edittext="edit" canceltext="cancel" updatetext="save" headertext="" />
</columns>

</asp:datagrid>
</form>

  以上代码中,自定义了数据编辑列,这些相应的处理在前面已经给出代码。我们现在来看事件处理。

  oneditcommand

  以下是编辑按钮处理代码:

sub dg_edit(sender as object, e as datagridcommandeventargs)

dg.edititemindex = e.item.itemindex
dg.databind()
end sub

  以上代码需要注意的是,e.item.itemindex就是我们需要编辑的那行数据。在对数据作任何变动以后,都需要重新绑定数据,也就是databing()。

  oncancelcommand

  取消按钮处理和上面的编辑按钮处理差不多,区别的是,在这里,dg.edititemindex被设为-1,也就是将数据恢复到原来状态。

  onupdatecommand

  先来看数据更新代码:

sub dg_update(sender as object, e as datagridcommandeventargs)
dim fname as textbox = e.item.cells(1).controls(0)
dim lname as textbox = e.item.cells(2).controls(0)
dim sqlstr as string

sqlstr = "update users set " & _
"number1 = " & fname.text & ", " & _
"number2 = " & lname.text & " " & _
"where auto = " & e.item.cells(0).text

dim objcommand = new oledbcommand(sqlstr, objconn)
objcommand.executenonquery()

ds.tables.clear
objadapter.fill(ds, "users")

dg.edititemindex = -1
dg.databind()
end sub

  以上代码将建立两个textbox,这两个textbox就是datagrid中的复本。然后用sql语句更新数据,最后重新绑定数据。

  总结

  以上代码可能初学者比较难懂,而且,上面的数据更新方法也不是很好。但是为了我们更好理解,我们还是可以参考以上代码。

  六、datagrid数据排序

  数据排序在一些特殊的场合是必要的。下面我们将详细介绍datagrid中的数据排序功能。在对datagrid数据实现排序功能以前,我们需要做以下准备:

  1、 将autogeneratecolumns设为打开,这样自定义数据列功能将失去,同时也将失去直接编辑功能。其实这无关紧要的,数据显示和编辑分开不同页面这种模式其实是现在比较认可的方法。

  2、 必须将allowsorting设为真,这样,在每一列数据的标题将建立一个链接,点击这个链接将按照这个字段排序。

  3、 必须建立排序事件,也就是onsortcommand。

  现在看代码:

<asp:datagrid id="dg" runat="server"
bordercolor="black"
gridlines="vertical"
font-names="arial"
font-size="10pt"
headerstyle-backcolor="#ffcc00"
itemstyle-backcolor="#ffcc66"
alternatingitemstyle-backcolor="#ffffff"
autogeneratecolumns="true"
oneditcommand="dg_edit"
oncancelcommand="dg_cancel"
onupdatecommand="dg_update"
onsortcommand="dg_sort"
allowsorting="true"
>
</asp:datagrid>

  以下是运行界面:

 

  排序事件处理

  排序需要用到dataview,现在我们来看排序处理:

sub dg_sort(sender as object, e as datagridsortcommandeventargs)
dim dtable as datatable = ds.tables("users")
dim dview as new dataview(dtable)
dview.sort = e.sortexpression.tostring & " asc"
dg.datasource = dview
dg.databind()
end sub

  从以上代码我们可以发现,数据排序功能的实现是需要依靠dataview的,排序以后,绑定数据。应用data view还可以实现其他很多功能,我们在这里只介绍它的排序应用。

  升序和降序

  我们可以给用户选择升序和降序来排列数据:

<form runat="server">
<asp:datagrid id="dg" runat="server"
bordercolor="black"
gridlines="vertical"
font-names="arial"
font-size="10pt"
headerstyle-backcolor="#ffcc00"
itemstyle-backcolor="#ffcc66"
alternatingitemstyle-backcolor="#ffffff"
autogeneratecolumns="true"
oneditcommand="dg_edit"
oncancelcommand="dg_cancel"
onupdatecommand="dg_update"
onsortcommand="dg_sort"
allowsorting="true"
>
</asp:datagrid>
<p>
<asp:radiobuttonlist runat="server" id="sortby" repeatdirection="horizontal" textalign="right" >
<asp:listitem selected="true">ascending</asp:listitem>
<asp:listitem>descending</asp:listitem>
</asp:radiobuttonlist>
</form>
以上大部分代码我们都很熟悉,只是在最后加了两个选项来选择升序还是降序。我们来看事件处理:
sub dg_sort(sender as object, e as datagridsortcommandeventargs)
dim sortby = request.form("sortby")
dim dtable as datatable = ds.tables("users")
dim dview as new dataview(dtable)
if sortby = "ascending" then
dview.sort = e.sortexpression.tostring & " asc"
else if sortby = "descending" then
dview.sort = e.sortexpression.tostring & " desc"
end if
dg.datasource = dview
dg.databind()
end sub

  事件先查看用户选择,然后根据用户选择来处理排序方式。图示如下:

  总结:

  以上所有章节介绍了asp.net数据库处理,虽然简单,但是应该还是可以给读者一些帮助的。需要注意的是,数据库处理还有很多其他方面没有介绍,在使用过程中需要我们不断学习。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·数据库开发个人总结(ADO.NET小结)-.NET教程,数据库应用
·怎么由DataSet将数据导入Excel?-.NET教程,数据库应用
·动态创建SQL Server数据库、表、存储过程-ASP教程,数据库相关
·Win32环境下动态链接库(DLL)编程原理-.NET教程,数据库应用
·封装的ADO.NET对数据库操作经典类-.NET教程,数据库应用
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·DataGrid使用心得(附大量代码)-ASP教程,数据库相关
·用代码创建DataGrid的多链接及checkbox事件响应-.NET教程,数据库应用
·ADO.NET 的最佳实践技巧-.NET教程,数据库应用
·转载: 用纯ASP代码实现图片上传并存入数据库中

最新文章
·根据数据表中数据,生成Powerpoint幻灯片-ASP教程,数据库相关
·DataGrid中的按钮反选事件与NamingContainer(命名容器)-downmoon-ASP教程,数据库相关
·使用用VB处理MYSQL数据库中二进制数据问题-.NET教程,VB.Net语言
·关于DataGridView中如何接收处于编辑状态下的当前信息-ASP教程,数据库相关
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·.net下访问Access数据库需要注意的问题-.NET教程,Asp.Net开发
·ActiveMQ4.1+Spring2.0的POJO JMS方案(上)-.NET教程,数据库应用
·ASP.NET 2.0中直接将Access数据库导入到Excel文件中-.NET教程,Asp.Net开发
·NET(C#)连接各类数据库-集锦-.NET教程,C#语言
·ASP.NET2.0连接SQL Server数据库详解-.NET教程,Asp.Net开发


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号