电脑维修第一互动门户_www.PC106.com 为了方便您再次访问电脑维修站,请点击收藏本站!设为首页
操作系统 · 硬件学院 · 软件学院 · 网络学院 · DIY 经验 · 数据恢复 · 网站技术 · 维修网点 · IT 黄 页 · 大师答疑
故障症状 · 电脑优化 · 病毒快报 · 黑客安全 · 维修宝典 · 电脑保养 · 服 务 器 · 在线杀毒 · 在线电视 · 网址服务
维修 CPU·主板·硬盘·内存·显卡·显示器·键盘鼠标·声卡音箱·软驱光驱·打印机·机箱电源·BIOS·网卡·局域网·浏览器
您现在的位置: 电脑维修 >> 网站技术 >> .NET技术 >> .NET基础 >> 网站技术正文
数据的更新
作者:佚名 文章来源:不详 点击数: 更新时间:2007-2-3 15:09:54

    上述的程序代码范例还不能够将使用者所作的修改更新回数据源,接下来我们将上述程序改成有数据更新的能力:

<%@Import Namespace=System.Data.ADO%>
<%@Import Namespace=System.Data%>
<Html>
<Form Runat="Server">
<ASP:DataGrid Id="dgA" AllowPaging="True" PageSize="5"
OnPageIndexChanged="dgA_PageChg" Runat="Server"
PagerStyle-Mode="NumericPages"
BorderColor="#808080"
HeaderStyle-Font-Names="Courier New"
HeaderStyle-BackColor="#D1DCEB"
HeaderStyle-Font-Bold="True"
HeaderStyle-HorizontalAlign="Center"
AutoGenerateColumns="False"
OnEditCommand="dgA_ECmd"
OnUpdateCommand="dgA_UCmd"
OnCancelCommand="dgA_CCmd" >
<Property Name="Columns">
<ASP:BoundColumn
HeaderText="姓名"
DataField="UserName"/>
<ASP:BoundColumn
HeaderText="电话"
DataField="UserTel"/>
<ASP:EditCommandColumn
HeaderText="编辑"
ButtonType="PushButton"
EditText="编辑"
UpdateText="更新"
CancelText="放弃" />
</Property>
</ASP:DataGrid>
</Form>
<Script Language="VB" Runat="Server">
Dim dscA As ADODataSetCommand=New ADODataSetCommand("Select * From
Members", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\InetPub\wwwroot\CR\Ch08\MyWeb.Mdb")
Dim dsDataSet As DataSet=New DataSet
Sub Page_Load(Sender As Object, e As EventArgs)
If Page.IsPostBack=False Then
BindGrid()
End If
End Sub
'将数据从数据源中取回,并和控件系结
Sub BindGrid()
dscA.FillDataSet(dsDataSet,"Members")
dgA.DataSource=dsDataSet.Tables("Members").DefaultView
Page.DataBind()
End Sub
Sub dgA_PageChg(Sender As Object, e As DataGridPageChangedEventArgs)
BindGrid()
End Sub
Sub dgA_ECmd(Sender As Object, e As DataGridCommandEventArgs)
dgA.EditItemIndex=e.Item.ItemIndex
BindGrid()
End Sub
Sub dgA_UCmd(Sender As Object, e As DataGridCommandEventArgs)
BindGrid()
Dim shtR As Short=(dgA.CurrentPageIndex * dgA.PageSize) +
dgA.EditItemIndex
Dim txtTemp As TextBox
txtTemp=e.Item.Cells(0).Controls(0) '取回第一个储存格中的
TextBox
'将数据填回对应的DataTable 中
dsDataSet.Tables("Members").Rows(shtR)("UserName")=txtTemp.Te
xt
txtTemp=e.Item.Cells(1).Controls(0) '取回第二个储存格中的
TextBox
'将数据填回对应的DataTable 中
dsDataSet.Tables("Members").Rows(shtR)("UserTel")=txtTemp.Tex
t
'将DataTable 的数据更新回数据
dscA.Update(dsDataSet,"Members")
dgA.EditItemIndex=-1
BindGrid()
End Sub
Sub dgA_CCmd(Sender As Object, e As DataGridCommandEventArgs)
dgA.EditItemIndex=-1
BindGrid()
End Sub
</SCRIPT>
</Html>

    由于我们要在许多程序中和数据源系结,并使用DataSetCommand 对象,所以我们将DataSetCommand、DataSet 对象宣告在网页阶层的宣告区;并且撰写从数据源取回数据、呼叫Page.DataBind() 方法的程序BindGrid:

Sub BindGrid()
dscA.FillDataSet(dsDataSet,"Members")
dgA.DataSource=dsDataSet.Tables("Members").DefaultView
Page.DataBind()
End Sub

另外我们也完成将使用者所作的改变更新回数据源的程序dgA_Ucmd,如下程序代码片段所示:

Sub dgA_UCmd(Sender As Object, e As DataGridCommandEventArgs)
BindGrid()
Dim shtR As Short=(dgA.CurrentPageIndex * dgA.PageSize) +
dgA.EditItemIndex
Dim txtTemp As TextBox
txtTemp=e.Item.Cells(0).Controls(0) '取回第一个储存格中的
TextBox
'将数据填回对应的DataTable 中
dsDataSet.Tables("Members").Rows(shtR)("UserName")=txtTemp.Text
txtTemp=e.Item.Cells(1).Controls(0) '取回第二个储存格中的TextBox
'将数据填回对应的DataTable 中
dsDataSet.Tables("Members").Rows(shtR)("UserTel")=txtTemp.Text
'将DataTable 的数据更新回数据
dscA.Update(dsDataSet,"Members")
dgA.EditItemIndex=-1
BindGrid()
End Sub

    由于我们将数据更新回数据源时,要指定数据在记录的绝对地址;所以我们将数据的绝对位置计算完毕后存入变量shtR 中,待数据更新时使用。接下来的程序代码将使用者所编修的内容取回,并存回DataSet 对象中,如下程序代码片段所示:

Dim txtTemp As TextBox
txtTemp=e.Item.Cells(0).Controls(0)
dsDataSet.Tables("Members").Rows(shtR)("UserName")=txtTemp.Text

    首先我们宣告了一个指向TextBox 对象的变量txtTemp,并传回DataListItem 中第一个字段的第一个控件之参考。因为DataListItem 是以表格的方式来呈现字段所以每一个DataListItem 都有一个Cells 集合,用来管理每笔资料所要显示的所有字段,而呈现每个字段的控件被放置于Cell 对象中;如下图所示:
所以要取得显示使用者名称的TextBox 控件之内存地址,以下列叙述即可:

txtTemp=e.Item.Cells(0).Controls(0)

而假设要取回「放弃」TextBox 的内存地址,并将其Text 属性显示出来;那么只要写成下列程序代码片段即可:

txtTemp=e.Item.Cells(2).Controls(1)
Response.Write(txtTemp.Text)

我们取得TextBox 的参考后,就可以将使用者所作的修改更新回DataTable 中,如下程序代码片所示:

dsDataSet.Tables("Members").Rows(shtR)("UserName")=txtTemp.Text

将所有的字段更新完毕后,最后只要利用DataSetCommand 对象的Update 方法将数据更新回数据源即可。



上网速度更快更爽、更安全下载使用Firefox火狐浏览器

网站技术录入:admin    责任编辑:admin 
  • 上一篇网站技术:

  • 下一篇网站技术: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

     IT图片报道

    14万元天价!640GB闪存硬盘美国问

    双核独显19寸液晶惠普PC机只卖49

    佳能MP160售价仅580元

    神舟双核液晶电脑3999起
     IT热点报道

    普通IT报道 中国电信称三年内实现光纤到户
    普通IT报道 广达个人电脑宣布已开始在江苏投入量产
    普通IT报道 14万元天价!640GB闪存硬盘美国问世
    普通IT报道 节后病毒猖獗系统瘫痪
    普通IT报道 AMD推出6款节能处理器
    推荐IT报道 双核独显19寸液晶惠普PC机只卖4999元
    普通IT报道 微软无奈下调Vista销售预期 XP仍是主角
    普通IT报道 佳能MP160售价仅580元
    推荐IT报道 神舟双核液晶电脑3999起
    推荐IT报道 4999元玩Vista 七喜12寸轻薄本升级
    关于公司 | 免责声明 | 广告服务 | 招贤纳士 | 联系我们 | 友情链接 1 2 3
    Copyright©2005 - 2007  http://www.PC106.com  All Right Reserved   
    桂ICP备06015569号