关于Repeater控件的使用

1  前台如下:

在 <body>中加入以下的代码

<form id="form1" runat="server">
    <div>
        <table style="border: 1px solid Green; width: 100%;" cellspacing="0" border="1">
            <tr>
                <th style="border: solid Green; width: 10%;">
                    &nbsp;
                </th>
                <th style="border: solid Green; width: 30%;">
                    CODE
                </th>
                <th style="border: solid Green; width: 30%;">
                    NAME
                </th>
                <th style="border: solid Green; width: 15%;">
                    VALUE
                </th>
                <th style="border: solid Green; width: 15%;">
                    操作
                </th>
            </tr>
            <asp:Repeater ID="rptAll" runat="server" OnItemCommand="rptAll_ItemCommand">
                <ItemTemplate>
                    <tr>
                        <td style="border: solid Green;">
                            <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/App_Themes/DefaultTheme/Images/error.jpg"
                                CommandName="Detail" />
                        </td>
                        <td style="border: solid Green;">
                            <asp:Label ID="lblCode" runat="server" Text='<%# Eval("CODE") %>'></asp:Label>
                        </td>
                        <td style="border: solid Green;">
                            <asp:Label ID="lblName" runat="server" Text='<%# Eval("NAME") %>'></asp:Label>
                        </td>
                        <td style="border: solid Green;">
                            <asp:TextBox ID="txtValue" runat="server" Text=""></asp:TextBox>
                        </td>
                        <td style="border: solid Green;">
                            &nbsp;
                        </td>
                    </tr>
                    <asp:Repeater ID="rptSub" runat="server" OnItemCommand="rptSub_ItemCommand" Visible="false">
                        <ItemTemplate>
                            <tr>
                                <td style="border: solid Green;">
                                    &nbsp;
                                </td>
                                <td style="border: solid Green;">
                                    <asp:Label ID="lblSubCode" runat="server" Text='<%# Eval("CODE") %>'></asp:Label>
                                </td>
                                <td style="border: solid Green;">
                                    <asp:Label ID="lblSubName" runat="server" Text='<%# Eval("NAME") %>'></asp:Label>
                                </td>
                                <td style="border: solid Green;">
                                    <asp:TextBox ID="txtSubValue" runat="server" Text=""></asp:TextBox>
                                </td>
                                <td style="border: solid Green;">
                                    <asp:ImageButton ID="ibtn" runat="server" ImageUrl="~/App_Themes/DefaultTheme/Images/error.jpg"
                                        CommandName="Save" />
                                </td>
                            </tr>
                        </ItemTemplate>
                    </asp:Repeater>
                </ItemTemplate>
            </asp:Repeater>
        </table>
    </div>
    </form>

 

2  后台代码如下:

 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default2 :System.Web.UI.Page  
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("CODE", typeof(System.String));
            dt.Columns.Add("NAME", typeof(System.String));

            DataRow dr = dt.NewRow();
            dr[0] = "CODE1";
            dr[1] = "NAME1";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = "CODE2";
            dr[1] = "NAME2";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = "CODE3";
            dr[1] = "NAME3";
            dt.Rows.Add(dr);

            rptAll.DataSource = dt;
            rptAll.DataBind();
        }
    }
    protected void rptAll_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        Repeater rptSub = (Repeater)e.Item.FindControl("rptSub");
        Label lblCode = (Label)e.Item.FindControl("lblCode");
        Label lblName = (Label)e.Item.FindControl("lblName");
        switch (e.CommandName)
        {
            case "Detail":
                {
                    if (rptSub.Visible)
                    {
                        rptSub.Visible = false;
                        return;
                    }

                    DataTable dtSub = new DataTable();
                    dtSub.Columns.Add("CODE", typeof(System.String));
                    dtSub.Columns.Add("NAME", typeof(System.String));

                    DataRow dr = dtSub.NewRow();
                    dr[0] = lblCode.Text + "----CODE1";
                    dr[1] = lblName.Text + "----NAME1";
                    dtSub.Rows.Add(dr);

                    dr = dtSub.NewRow();
                    dr[0] = lblCode.Text + "----CODE2";
                    dr[1] = lblName.Text + "----NAME2";
                    dtSub.Rows.Add(dr);

                    dr = dtSub.NewRow();
                    dr[0] = lblCode.Text + "----CODE2";
                    dr[1] = lblName.Text + "----NAME2";
                    dtSub.Rows.Add(dr);

                    rptSub.DataSource = dtSub;
                    rptSub.DataBind();
                    rptSub.Visible = true;
                    break;
                }
            case "Save":
                break;
        };
    }
    protected void rptSub_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        RepeaterItem rptAllItem = (RepeaterItem)e.Item.Parent.Parent;
        TextBox txtValue = (TextBox)rptAllItem.FindControl("txtValue");

        Repeater rptSub = (Repeater)e.Item.Parent;
        TextBox txtSubValue = null;

        txtValue.Text = "0";
        for (int i = 0; i < rptSub.Items.Count; i++)
        {
            int temp = 0;
            txtSubValue = (TextBox)rptSub.Items[i].FindControl("txtSubValue");
            int.TryParse(txtSubValue.Text, out temp);

            int old = 0;
            int.TryParse(txtValue.Text, out old);
            txtValue.Text = (old + temp).ToString();
        }
        switch (e.CommandName)
        {
            case "Detail":
                break;
            case "Save":
                break;
        };
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值