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%;">
</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;">
</td>
</tr>
<asp:Repeater ID="rptSub" runat="server" OnItemCommand="rptSub_ItemCommand" Visible="false">
<ItemTemplate>
<tr>
<td style="border: solid Green;">
</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;
};
}
}