DataList Web--OnItemCommand 事件
2006-08-17 18:24
411 查看
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 控件重新再以新的设定来显示数据源中的数据。
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 控件重新再以新的设定来显示数据源中的数据。
相关文章推荐
- DataList的问题 - ItemCommand事件不响应
- 关于DataList的嵌套 和(ItemCommand)事件的问题
- datalist itemcommand datakey
- android中ListView控件&&onItemClick点击事件
- Android RecyclerView单击、长按事件标准实现:基于OnItemTouchListener + GestureDetector
- Repeater 的操作,数据的显示,绑定,动态取控件中的值和Repeater1_ItemCommand事件的相关用法
- Repeater.ItemCommand事件不激发?
- android中ListView控件&&onItemClick点击事件
- DataList_ItemCommand 常用方法
- PopupWindow使用GridView后,onItemOnClick事件没有反应
- datalist控件ItemCommand与DataList1_ItemDataBound编程实例,使用示例数据库
- Repeater 的操作,数据的显示,绑定,动态取控件中的值和Repeater1_ItemCommand事件的相关用法
- 关于ASP.NET里面的onmenuitemclick事件不被触发的问题
- [ERROR] Failed to execute goal org.codehaus.mojo:gwt-maven-plugin:2.5.0-rc1:compile (default) on project zeus-web: Command 解决
- [Repeater]三個事件的執行先後?ItemDataBound / ItemCreated / ItemCommand
- WEB 页中OnInit 和 Page_Init 事件有什么不同
- MFC 基于对话框的 OnCommand 用作响应按钮事件
- web-前端之事件冒泡,其中包括(onmousemove,onmouseover,onmouseout,onmouseleave,onmouseup,onmouseentter)可用于一些计数小游戏
- Repeater 为什么不激发 ItemCommand事件了?
- [Repeater]三个事件的执行先后?ItemDataBound / ItemCreated / ItemCommand