广·西·电·脑·服·务·网                                     设为首页  收藏本站
首 页 IT 报 道 操作系统 硬件学院 软件学院 网络学院 服 务 器 软件下载
DIY经验 数据恢复 维修宝典 电脑保养 故障症状 黑客安全 病毒快报 电脑优化
维修网点 IT 黄 页 网络游戏 大师答疑 网站技术 动漫游戏 服务社区 素材图片
 广西电脑服务网 ·广西最大的电脑服务平台
您现在的位置: 广西电脑维修在线 >> 网站技术 >> .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 方法将数据更新回数据源即可。



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

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

     IT图片报道

    联想D222到货22寸LCD迅速串红市场

    入门超频王!双敏945PL狂跑1200 F

    冠捷春季新品197V+突破高对比上市

    核心500MHz!性价比王者双敏X1650
     IT热点报道

    普通IT报道 联想D222到货22寸LCD迅速串红市场
    推荐IT报道 入门超频王!双敏945PL狂跑1200 FSB!
    推荐IT报道 冠捷春季新品197V+突破高对比上市
    普通IT报道 核心500MHz!性价比王者双敏X1650GT登场!
    普通IT报道 549元双敏945GC主板到货!
    普通IT报道 宏碁笔记本存储王As3683升级送礼!
    普通IT报道 魅族MP3全线暴跌 M6SP4G版不足700
    普通IT报道 OPPO首款顶级4.3寸大屏MP4 A3上市
    普通IT报道 维修服务拯救PC,谁拯救维修服务?
    普通IT报道 影驰8800GTS游戏盒子上市
    关于公司 | 免责声明 | 广告服务 | 招贤纳士 | 联系我们 | 友情链接 | 网站地图 1 2 3
    Copyright@2005 - 2006  http://www.GXF.com.cn  All Right Reserved  
    桂ICP备06002242号

    技术咨询
    22097366
    10231086
    30636841
    技术交流群
    27717914