帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > 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编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·放眼未来 帝国近期将有重大举措!
·PHPWind6.3.2版通行证发布
·帝国备份王2008版正式发布
·帝国备份王2008版发布
·phpcms2007转帝国CMS5.0程序发布
·dedecms5.1转帝国CMS5.0程序发布
·帝国网站管理系统V5.0商业购买说明
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统