zoukankan      html  css  js  c++  java
  • 关于 Repeater 控件嵌套的使用。在嵌套中添加 其它控件(如:按钮),并影响其它控件的方法,很重要哦,测试通过。

    这里的Repeater 嵌套,是指在 外层的Repeater的 ItemTemplate 中 又添加了一个 Repeater ,并且在两层的Repeater中都添加了一个Button控件。我们要实现两个控件的事件响应。也就是点两个Button时执行相应的方法。

    看 .aspx 代码:

    1 <asp:Repeater ID="Repeater1" runat="server"
    2 onitemdatabound="Repeater1_ItemDataBound"
    3 onitemcommand="Repeater1_ItemCommand">
    4  // 这是外层的Repeater。注意看最后一行。Onitemcommand 事件
    5   <HeaderTemplate>
    6  <table width="500" border="0" cellspacing="3" cellpadding="0">
    7 </HeaderTemplate>
    8
    9 <ItemTemplate>
    10 <tr>
    11 <td width="72" height="30" bgcolor="#669966"><%# Eval("UserName") %></td>
    12 <td height="30" bgcolor="#669966"><%# Eval("Title") %><div style="text-align: right; clear: right"><asp:Button Text="删除留言" runat="server" CommandName="deletely" CommandArgument='<%# Eval("ID") %>' />
    13  //这是外层的Button。
    14 </div></td>
    15 </tr>
    16 <tr>
    17 <td height="30"></td>
    18 <td height="30" bgcolor="#99FFCC"><%# Eval("cont") %></td>
    19 </tr>
    20 <tr>
    21 <td height="30">&nbsp;</td>
    22 <td height="30">
    23 <asp:Repeater ID="Repeater2" runat="server" onitemcommand="Repeater2_ItemCommand">
    24 //这里嵌套到里面的第二Repeater。在这个控件中,也有一个Onitemcommand 事件的处理。
    25 <HeaderTemplate>
    26 <table width="415" border="0" cellspacing="3" cellpadding="0">
    27 </HeaderTemplate>
    28 <ItemTemplate>
    29
    30 <tr>
    31 <td width="20%" height="30" bgcolor="#0099FF"><%# Eval("UserName") %></td>
    32 <td height="30" bgcolor="#0099FF"><%# Eval("Title") %><div style="text-align: right; clear: right"><asp:Button ID="Button1" Text="删除回复" runat="server" CommandName="deletehf" CommandArgument='<%# Eval("ID") %>' />
    33 // 这是内层的 Button。
    34 </div></td>
    35 </tr>
    36 <tr>
    37 <td height="30" colspan="2"><%# Eval("Reply") %></td>
    38 </tr>
    39
    40 </ItemTemplate>
    41
    42 <FooterTemplate>
    43 </table>
    44 </FooterTemplate>
    45 </asp:Repeater>

    我们就是依靠 这两个 Onitemcommand 事件来执行代码的。

    来看一下, .cs 代码

    1 protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    2 //在这里处理第1个Button事件,因为这个Button位于第一个 Repeater中。
    3 //在这里是不能捕捉到第二个Repeater控件中的Button事件的。
    4 {
    5 if (e.CommandName == "deletely")
    6 {
    7 int dlid = Convert.ToInt32(e.CommandArgument.ToString());
    8 opclass opc = new opclass();
    9 opc.ExectCmd(string.Format("Delete From [liuyan] Where ID={0}", dlid));
    10 opclass opc1 = new opclass();
    11 opc1.ExectCmd(string.Format("Delete From [Reply] Where lyID={0}", dlid));
    12 bangdingdata();
    13
    14 }
    15 }
    16
    17 protected void Repeater2_ItemCommand(object source, RepeaterCommandEventArgs e)
    18 //在这里处理第2个Button事件,因为这个Button位于第二个 Repeater中。
    19 {
    20 if (e.CommandName == "deletehf")
    21 {
    22 int dlid = Convert.ToInt32(e.CommandArgument.ToString());
    23 opclass opc = new opclass();
    24 opc.ExectCmd(string.Format("Delete From [Reply] Where ID={0}", dlid));
    25 bangdingdata();
    26
    27
    28 }
    29
    30 }

    提示:

    点击外层的 Repeater 控件的时候,在属性对话框中,可以找到 OnitemCommand 事件,双击可以自动创造出对应的代码。

    (也就是可以在属性对话框中点击那个小闪电符号找到对应的事件)但是当点击内层的Repeater的时候,是没有那个小闪电的。所以,在第二个

    Repeater 中的 OnitemCommand事件只能手动添加上去,要在.aspx文件和.cs文件中分别添加对应的代码才行。添加完成后,程序会执行对应的代码。

  • 相关阅读:
    HDU 3572 Task Schedule(拆点+最大流dinic)
    POJ 1236 Network of Schools(Tarjan缩点)
    HDU 3605 Escape(状压+最大流)
    HDU 1166 敌兵布阵(分块)
    Leetcode 223 Rectangle Area
    Leetcode 219 Contains Duplicate II STL
    Leetcode 36 Valid Sudoku
    Leetcode 88 Merge Sorted Array STL
    Leetcode 160 Intersection of Two Linked Lists 单向链表
    Leetcode 111 Minimum Depth of Binary Tree 二叉树
  • 原文地址:https://www.cnblogs.com/lujin49/p/2103602.html
Copyright © 2011-2022 走看看