• 控件Repeater的嵌套使用


    控件Repeater的嵌套使用

    左直拳

     

    可以嵌套使用Repeater

     

    页面代码:

    <asp:Repeater ID="rpParent" runat="server" OnItemCommand="rpParent_ItemCommand">

        <HeaderTemplate>

             <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="5" style="text-align:left;">

             <tr>

                  <td>父字段1</td>

                  <td>父字段2</td>

                  <td></td>

             </tr>

    </HeaderTemplate>

    <ItemTemplate>

              <tr>

              <td><%# Eval("Parent1")%><input id="txtParent1" type="hidden" value='<%# Eval("Parent1")%>' runat="server" /></td>

              <td><%# Eval("Parent2")%></td>

              <td><asp:LinkButton ID="lnkShowChild" runat="server" CommandName="ShowChild">展开孩子</asp:LinkButton></td>

              </tr>

              <tr><td colspan="3">

     

     

                  <asp:Repeater ID="rpChild" runat="server">

                      <HeaderTemplate>

                      <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="5" style="text-align:left;">

                 <tr><td>子字段1</td><td>子字段2</td>

                      </tr>

                       </HeaderTemplate>

                       <ItemTemplate>

                            <tr><td><%# Eval("Child1")%></td><td><%# Eval("Child2")%></td></tr>

                       </ItemTemplate>

                       <FooterTemplate>

                            </table>

                        </FooterTemplate>                                

                    </asp:Repeater>

     

     

    </td></tr>

    </ItemTemplate>

    <FooterTemplate>

                             </table>

    </FooterTemplate>                   

    </asp:Repeater>

     

    后台代码:

        protected void rpParent_ItemCommand(object source, RepeaterCommandEventArgs e)

        {

            if (e.CommandName == "ShowChild")

            {

                Repeater rp = (Repeater)e.Item.FindControl("rpChild");

                HtmlInputHidden txtChild = (HtmlInputHidden)e.Item.FindControl("txtChild");

                rp.DataSource = _GetData(txtChild.Value);

                rp.DataBind();

            }

    }

     

    2个地方值得一提:

    1、       <%# Eval("Child1")%> 这类的写法,是对距离最近的Repeater而言。象这里的例子,子Repeater嵌套在父Repeater里,但位于子Repeater里的<%# Eval("Child1")%> 不会与父控件有冲突;

    2、       后台代码这里支持事件。不象网上找到的许多例子,都是装载时一口气打开。而是点击“打开孩子”才展开。参数是存放在一个HiddenHTML文本框里。之前听说只有ASP.NET的控件才有可能在后台FindControl,但现在看来也可以,也许是20的缘故吧。

     

     
  • 相关阅读:
    Sql Server 2012 数据库同步方式 (发布、订阅)
    博客搬家通知
    无聊而又劳累的一天
    有没有大神知道国产加密算法SM2的详细介绍
    Android开发环境搭建helloworld程序创建(新手)
    debian下安装东西,遇到两个东西,记录下
    算法:扑克牌相关的一个简单功能示意(纯C实现)
    [51单片机学习笔记FIVE]----独立按键
    [51单片机学习笔记FOUR]----16*16LED点阵
    [51单片机学习笔记THREE]----继电器
  • 原文地址:https://www.cnblogs.com/leftfist/p/4258268.html
Copyright © 2020-2023  润新知