帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程
数据的更新
作者:佚名 发布时间:2005-04-02 来源:不详
 

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

<%@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:InetPubwwwrootCRCh08MyWeb.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 方法将数据更新回数据源即可。
 
 
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·DataGrid Web 控件的进阶应用--使  (2005-04-02)
 ·输出数据的润饰  (2005-04-02)
 ·处理表单数据  (2005-04-02)
 ·JSP连接数据库大全  (2005-04-02)
 ·JSP数据库基础知识 语法详解  (2005-04-02)
 ·数据库BEAN:RESIN连接池  (2005-04-02)
 ·Java Servlet开发三层数据库程序  (2005-04-02)
 ·如何利用JSP连接数据库大全  (2005-04-02)
 ·J2EE应用中与Oracle数据库的连接  (2005-04-02)
 ·J2EE应用中,提升数据访问层的性能  (2005-04-02)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统