Repeater嵌套Repeater

 

第一步:在前台建立两个Repeater,一个嵌套在另一个Repeater里面,下面代码没什么好说的。

           <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">

            <ItemTemplate>

            <table border="1" bordercolor="gray" style="border-collapse: collapse; ">

             <tr bgcolor="#c0c0c0" style="color:DimGray; font-weight:bold;">

              <td width="70px" >

               名称:

              </td>

              <td width="350px">

               <%# Eval("project_name")%>

              </td>

             </tr>                     

            <tr>

              <td colspan="2">

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

                  <HeaderTemplate>

                    <table border="1" bordercolor="gray" style="border-collapse:collapse;">

                    <tr>

                     <td width="68px">

                       组号

                     </td>

                     <td width="120px">

                       组金额

                     </td>

                    </tr>

                    </table>

                  </HeaderTemplate>

                  <ItemTemplate>

                    <table border="1" bordercolor="gray" style="border-collapse: collapse;">

                    <tr>

                     <td width="68px">

                       <%# Eval("group_no")%>

                     </td>

                     <td width="120px">

                       <%# string.Format("{0:N0}", Eval("app_value_group"))%>

                    </td>

                    </tr>

                    </table>

                  </ItemTemplate>

                  </asp:Repeater>

             </td>

              </tr>

            </table>

            <br />

            </ItemTemplate>

            </asp:Repeater>

第二步:建立Repeater1的绑定函数。并在适当的地方引用。

    private void prRepeater1([参数1][,参数2])

    {

        //SQL语句

        string sql = "XXXXX";

        //数据库操作类执行SQL语句并返回dataset等

        this.Repeater1.DataSource =DB.AccessAdp(sql);

        //绑定

        this.Repeater1.DataBind();

    }

      protected void Page_Load(object sender, EventArgs e)

    {

        //页面加载引用

        this.prRepeater1([参数1][,参数2]);

     }

第三步:也是最关键的地方,在Repeater1的ItemDataBound事件中绑定Repeater2,代码如下:

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)

    {

        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

        {

            Repeater rep = e.Item.FindControl("Repeater2") as Repeater;

            DataRowView rowv = (DataRowView)e.Item.DataItem;

            //以下是读取Repeater1中绑定数据的字段,用于Repeater2的查询条件

            string strDecide_No =rowv["xxxx"].ToString();

            string strVer_No = rowv["xxxx"].ToString();

             //以下是Repeater2的数据读取和绑定

            string sql = " XXXXXX"; 

           //调用数据操作类执行SQL语句

            rep.DataSource = DB.AccessAdp(sql);

            rep.DataBind();

        }

    }

以上是实现过程,SQL语句和数据操作类没有列出来,请根据实际情况进行适当修改。

你可能感兴趣的:(r)