• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 數據的更新

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    上述的程序代碼范例還不能夠將使用者所作的修改更新回數據源,接下來我們將上述程序改成有數據更新的能力: %@Import Namespace=System.Data.ADO% %@Import Namespace=System.Data% Html Form Runat=Server ASP:DataGrid Id=dgA AllowPaging=True PageSize=5
        上述的程序代碼范例還不能夠將使用者所作的修改更新回數據源,接下來我們將上述程序改成有數據更新的能力:

    <%@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 方法將數據更新回數據源即可。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>