• <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來源:作者:點擊數: 標簽:
    下列兩個范例都是將DataList Web 控件加入編輯數據的功能,第一個范例只用OnItemCommand 事件,第二個范例綜合OnEditCommand、OnCancelCommand,以及OnUpdateCommand 事件。使用者在選擇一個項目展開SelectedItemTemplate 樣版顯示詳細資料后,若選擇「編輯


        下列兩個范例都是將DataList Web 控件加入編輯數據的功能,第一個范例只用OnItemCommand 事件,第二個范例綜合OnEditCommand、OnCancelCommand,以及OnUpdateCommand 事件。使用者在選擇一個項目展開SelectedItemTemplate 樣版顯示詳細資料后,若選擇「編輯」選項時會顯示EditItemTemplate 樣版,EditItemTemplate 樣版是以TextBox來顯示使用者資料,并且可以接受使用者的修改。修改完成后可以按「確定」執行將數據更新回數據源的動作,「放棄」可以回到顯示使用者詳細數據的選項:

    范例一只使用OnItemCommand 事件

    <%@Import Namespace=System.Data.ADO%>
    <%@Import Namespace=System.Data%>
    <Html>
    <Form runat="Server">
    <ASP:DataList Id="dlA" OnItemCommand="dlA_ICMD"
    GridLines="both" Runat="Server">
    <Template Name="ItemTemplate">
    <ASP:Image ImageUrl="ico1.gif" Runat="Server"/>
    姓名: <%#Container.DataItem("UserName")%>
    <ASP:LinkButton Id="lbShow" Text=">" Runat="Server"/>
    </Template>
    <Template Name="EditItemTemplate">
    <ASP:Image ImageUrl="ico1.gif" Runat="Server"/>
    姓名: <%#Container.DataItem("UserName")%><br>
    電話:<ASP:TextBox Id="T1"
    Text='<%#Container.DataItem("UserTel")%>'
    Runat="Server"/><br>
    住址:<ASP:TextBox Id="T2"
    Text='<%#Container.DataItem("UserAdd")%>'
    Runat="Server"/><br>
    電郵:<ASP:TextBox Id="T3"
    Text='<%#Container.DataItem("UserEMail")%>'
    Runat="Server"/><br>
    <ASP:LinkButton Id="lbCancel" Text="[放棄]" Runat="Server"/>
    <ASP:LinkButton Id="lbSubmit" Text="[確定]" Runat="Server"/><br>
    </Template>
    <Template Name="SelectedItemTemplate">
    <ASP:Image ImageUrl="ico1.gif" Runat="Server"/>
    姓名: <%#Container.DataItem("UserName")%>
    <ASP:LinkButton Id="lbClose" Text="<" Runat="Server"/><br>
    電話: <%#Container.DataItem("UserTel")%><br>
    住址: <%#Container.DataItem("UserAdd")%><br>
    電郵: <%#Container.DataItem("UserEmail")%><br>
    <ASP:LinkButton Id="lbEdit" Text="[編輯]" Runat="Server"/><br>
    </Template>
    </ASP:DataList>
    </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\Ch05\MyWeb.Mdb")
    Dim dsDataSet As DataSet=New DataSet
    Dim dtDataTable As DataTable
    Sub Page_Load(Sender As Object, e As EventArgs)
    dscA.FillDataSet(dsDataSet,"Members")
    dtDataTable=dsDataSet.Tables("Members")
    dlA.DataSource=dtDataTable.DefaultView
    If Not Page.IsPostBack Then Page.DataBind()
    End Sub
    Sub dlA_ICMD(Sender As Object, e As DataListCommandEventArgs)
    If e.CommandSource.Id="lbShow" Then
    dlA.SelectedIndex=e.Item.ItemIndex
    ElseIf e.CommandSource.Id="lbClose" Then
    dlA.SelectedIndex=-1
    ElseIf e.CommandSource.Id="lbEdit" Then
    dlA.EditItemIndex=e.Item.ItemIndex
    ElseIf e.CommandSource.Id="lbCancel" Then
    dlA.EditItemIndex=-1
    ElseIf e.CommandSource.Id="lbSubmit" Then
    Dim txtTemp As TextBox
    txtTemp=e.Item.FindControl("T1") '取回ListItem 中名為T1 的控件參

    dtDataTable.Rows(dlA.EditItemIndex)("UserTel")=txtTemp.Text
    txtTemp=e.Item.FindControl("T2") '取回ListItem 中名為T2 的控件參

    dtDataTable.Rows(dlA.EditItemIndex)("UserAdd")=txtTemp.Text
    txtTemp=e.Item.FindControl("T3") '取回ListItem 中名為T3 的控件參

    dtDataTable.Rows(dlA.EditItemIndex)("UserEmail")=txtTemp.Text
    dscA.Update(dsDataSet,"Members")
    dlA.EditItemIndex=-1
    End If
    dlA.DataBind()
    End Sub
    </SCRIPT>
    </Html>


        由于我們要在許多程序中使用DataTable、DataSet 以及DataSetCommand 對象,所我們將這些對象變量宣告在網頁階層的宣告區。程序開始執行時,先以ItemTemplate 樣版來顯示資料。待任意項目被選擇后,便以SelectedItemTemplate 樣版來顯示該項目,如下圖所示:


    選擇「編輯」選項后,便以EditItemTemplate 樣版來顯示所要編輯的記錄;使用者可以在TextBox中編修數據,如下圖所示:


        待使用者將數據編輯完畢點選「確定」按鈕時,我們就在dlA_ICMD 事件程序中將使用者所作的修改更新回數據源;如下程序代碼片段所示:

    ElseIf e.CommandSource.Id="lbSubmit" Then
    Dim txtTemp As TextBox
    txtTemp=e.Item.FindControl("T1") '取回ListItem 中名為T1 的控件參

    dtDataTable.Rows(dlA.EditItemIndex)("UserTel")=txtTemp.Text
    txtTemp=e.Item.FindControl("T2") '取回ListItem 中名為T2 的控件參

    dtDataTable.Rows(dlA.EditItemIndex)("UserAdd")=txtTemp.Text
    txtTemp=e.Item.FindControl("T3") '取回ListItem 中名為T3 的控件參

    Then
    dtDataTable.Rows(dlA.EditItemIndex)("UserEmail")=txtTemp.Text
    dscA.Update(dsDataSet,"Members")
    dlA.EditItemIndex=-1
    End If

        上述程序代碼片段宣告一個TextBox 型態的對象變量,用來存放ListItem 中TextBox 控件的參考;此時我們就可以用ListItem 對象的FindControl() 方法來取得指定的控件參考,FindControl只要傳入想要傳回對象參考的Id 屬性即可。最后只要呼叫DataSetCommand 對象的Update 方法,就可以將使用者所作的修改更新回原來的數據源。所以選擇「確定」回到SelectedItemTanplate 樣版的模式來顯示數據時,就可以看到資料已經被更新了;如下圖所示:


    范例二綜合相關事件

    <%@Import Namespace=System.Data.ADO%>
    <%@Import Namespace=System.Data%>
    <Html>
    <Form runat="Server">
    <ASP:DataList Id="dlA" OnItemCommand="dlA_ICmd"
    OnEditCommand="dlA_ECmd"
    OnCancelCommand="dlA_CCmd" GridLines="both"
    Runat="Server">
    <Template Name="ItemTemplate">
    <ASP:Image ImageUrl="ico1.gif" Runat="Server"/>
    姓名: <%#Container.DataItem("UserName")%>
    <ASP:LinkButton Id="lbShow" Text=">" CommandName="Show"
    Runat="Server"/>
    </Template>
    <Template Name="EditItemTemplate">
    <ASP:Image ImageUrl="ico1.gif" Runat="Server"/>
    姓名: <%#Container.DataItem("UserName")%><br>
    電話:<ASP:TextBox Id="T1"
    Text='<%#Container.DataItem("UserTel")%>'
    Runat="Server"/><br>
    住址:<ASP:TextBox Id="T2"
    Text='<%#Container.DataItem("UserAdd")%>'
    Runat="Server"/><br>
    電郵:<ASP:TextBox Id="T3"
    Text='<%#Container.DataItem("UserEMail")%>'
    Runat="Server"/><br>
    <ASP:LinkButton Id="lbCancel" Text="[放棄]" CommandName="Cancel"
    Runat="Server"/>
    <ASP:LinkButton Id="lbSubmit" Text="[確定]" CommandName="Submit"
    Runat="Server"/><br>
    </Template>
    <Template Name="SelectedItemTemplate">
    <ASP:Image ImageUrl="ico1.gif" Runat="Server"/>
    姓名: <%#Container.DataItem("UserName")%>
    <ASP:LinkButton Id="lbClose" Text="<" CommandName="Close"
    Runat="Server"/><br>
    電話: <%#Container.DataItem("UserTel")%><br>
    住址: <%#Container.DataItem("UserAdd")%><br>
    電郵: <%#Container.DataItem("UserEmail")%><br>
    <ASP:LinkButton Id="lbEdit" Text="[編輯]" CommandName="Edit"
    Runat="Server"/><br>
    </Template>
    </ASP:DataList>
    </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\Ch05\MyWeb.Mdb")
    Dim dsDataSet As DataSet=New DataSet
    Dim dtDataTable As DataTable
    Sub Page_Load(Sender As Object, e As EventArgs)
    dscA.FillDataSet(dsDataSet,"Members")
    dtDataTable=dsDataSet.Tables("Members")
    dlA.DataSource=dtDataTable.DefaultView
    If Not Page.IsPostBack Then Page.DataBind()
    End Sub
    Sub dlA_ICmd(Sender As Object, e As DataListCommandEventArgs)
    If e.CommandSource.CommandName="Show" Then
    dlA.SelectedIndex=e.Item.ItemIndex
    ElseIf e.CommandSource.CommandName="Close" Then
    dlA.SelectedIndex=-1
    ElseIf e.CommandSource.CommandName="Submit" Then
    Dim txtTemp As TextBox
    txtTemp=e.Item.FindControl("T1") '取回ListItem 中名為T1 的控件參

    dtDataTable.Rows(dlA.EditItemIndex)("UserTel")=txtTemp.Text
    txtTemp=e.Item.FindControl("T2") '取回ListItem 中名為T2 的控件參

    dtDataTable.Rows(dlA.EditItemIndex)("UserAdd")=txtTemp.Text
    txtTemp=e.Item.FindControl("T3") '取回ListItem 中名為T3 的控件參

    dtDataTable.Rows(dlA.EditItemIndex)("UserEmail")=txtTemp.Text
    dscA.Update(dsDataSet,"Members")
    dlA.EditItemIndex=-1
    End If
    dlA.DataBind()
    End Sub
    Sub dlA_ECmd(Sender As Object, e As DataListCommandEventArgs)
    dlA.EditItemIndex=e.Item.ItemIndex
    dlA.DataBind()
    End Sub
    Sub dlA_CCmd(Sender As Object, e As DataListCommandEventArgs)
    dlA.EditItemIndex=-1
    dlA.DataBind()
    End Sub
    </SCRIPT>
    </Html>

    上述范例二的執行結果和范例一完全一樣。

    原文轉自: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>