DataList Web--OnItemCommand 事件

發表于:2007-07-14來源:作者:點擊數: 標簽:
OnItemCommand 當在ItemTemplate 中所宣告的Button 或LinkButton 控件觸發事件時,如果該控件的CommandName 屬性內容不是Edit、Cancel、Delete 或Update 時,便觸發本事件。其宣告語法為: Sub OnItemCommand(Sender As Object, e As DataListCommandEventAr


    OnItemCommand 當在ItemTemplate 中所宣告的Button 或LinkButton 控件觸發事件時,如果該控件的CommandName 屬性內容不是Edit、Cancel、Delete 或Update 時,便觸發本事件。其宣告語法為:

Sub OnItemCommand(Sender As Object, e As DataListCommandEventArgs)
...
End Sub

其中參數e 有2 個屬性,如下表所示:

    要使用本事件前,首先必須在ItemTemplate 中宣告LinkButton 或Button Web 控件。下列范例在ItemTemplate 中宣告一個LinkButton Web 控件,當使用者按下LinkButton Web 控件后,會顯示該項目的詳細數據:

<%@Import Namespace=System.Data.ADO%>
<%@Import Namespace=System.Data%>
<!--#Include File="GetTable.inc"-->
<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="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>
</Template>
</ASP:DataList>
</Form>
<Script Language="VB" Runat="Server">
Sub Page_Load(Sender As Object, e As EventArgs)
Dim dtDataTable As DataTable=GetTable("CH05\MyWeb.mdb", "Members")
dlA.DataSource=dtDataTable.DefaultView
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"
dlA.SelectedIndex=-1
End If
dlA.DataBind()
End Sub
</SCRIPT>
</Html>



    上述范例我們定義了ItemTemplate 以及SelectedItemTemplate 這兩個樣版,并指定DataListWeb 控件的OnItemCommand 屬性為dlA_ICMD,表示當Template 中的控件引發事件時,只要引發事件的控件其CommandName 屬性值不是Edit、Cancel、Delete 或Update 時,才會觸發本事件。不過我們在Template 中的LinkButton 控件并沒有指定其CommandName 屬性,符合觸發OnItemCommand 事件的條件;所以這個范例在觸發事件時會執行dlA_ICMD 事件程序。由于DataList 會引發事件,所以DataList 控件必需被放置于<Form> 標注之中。當事件觸發時我們就可以透過e.CommandSource 來取得引發事件的控件之參考,并判斷其Id 屬性。若其Id屬性為lbShow,則將DataList Web 控件的SelectedIndex 屬性指定為e.Item.ItemIndex,e.Item.ItemIndex 表示被選到項目的Index 值,所以該筆記錄就會以SelectedItemTemplate 來顯示詳細資料;若Id 屬性為lbClose,則將DataList Web 控件的SelectedIndex 設為-1,表示沒有任何選項被選擇。另外DataList 設定SelectedIndex 屬性完畢后必須要再呼叫DataBind 方法,讓DataList Web 控件重新再以新的設定來顯示數據源中的數據。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97