Repeater动态增加行,PostBack保留数据
前台代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %>
<!
DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
head
runat="server">
<
title
></
title
>
</
head
>
<
body
>
<
form
id="form1" runat="server">
<
div
>
<
asp:Button
ID="btnNew" runat="server" Text="新建" onclick="btnNew_OnClick" />
<
asp:Repeater
ID="rpCustomerInfo" runat="server"
onitemcommand="rpCustomerInfo_ItemCommand">
<
HeaderTemplate
>
<
table
>
<
tr
>
<
th
>ID</
th
><
th
>Name</
th
><
th
>Telephone</
th
><
th
>RegisterDate</
th
><
th
>删除</
th
>
</
tr
>
</
HeaderTemplate
>
<
ItemTemplate
>
<
tr
>
<
td
>
<
asp:TextBox
ID="TextBox1" runat="server" Text='<%#Eval("ID")%>' ></
asp:TextBox
></
td
>
<
td
><
asp:TextBox
ID="TextBox2" runat="server" Text='<%#Eval("Name")%>' ></
asp:TextBox
></
td
>
<
td
><
asp:TextBox
ID="TextBox3" runat="server" Text='<%#Eval("Telephone")%>' ></
asp:TextBox
></
td
>
<
td
><
asp:TextBox
ID="TextBox4" runat="server" Text='<%#Eval("RegisterDate")%>' ></
asp:TextBox
></
td
>
<
td
>
<
asp:LinkButton
ID="lbnDelete" runat="server" CommandName="Delete" >删除</
asp:LinkButton
>
</
tr
>
</
ItemTemplate
>
<
FooterTemplate
>
</
table
>
</
FooterTemplate
>
</
asp:Repeater
>
</
div
>
</
form
>
</
body
>
</
html
>
|
后台代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Data;
namespace
WebApplication1
{
public
partial
class
WebForm2 : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!IsPostBack)
{
InitData();
DataBinds();
}
}
protected
void
InitData()
{
DateTime time = DateTime.Now;
DataTable dt =
new
DataTable();
dt.Columns.Add(
"ID"
,
typeof
(
string
));
dt.Columns.Add(
"Name"
,
typeof
(
string
));
dt.Columns.Add(
"Telephone"
,
typeof
(
string
));
dt.Columns.Add(
"RegisterDate"
,
typeof
(
string
));
for
(
int
i = 0; i < 2; i++)
{
DataRow dr=dt.NewRow();
dr[
"ID"
] = i + 1;
dr[
"Name"
] =
"user"
+ (i + 1);
dr[
"Telephone"
] =
"123456"
;
dr[
"RegisterDate"
] =time.AddDays(i * 10).ToString(
"yyyy-MM-dd"
);
dt.Rows.Add(dr);
}
ViewState.Add(
"Data"
,dt);
}
protected
void
DataBinds()
{
rpCustomerInfo.DataSource=ViewState[
"Data"
]
as
DataTable;
rpCustomerInfo.DataBind();
}
protected
DataTable CopyFormData()
{
DataTable dt = (ViewState[
"Data"
]
as
DataTable).Clone();
foreach
(RepeaterItem ri
in
rpCustomerInfo.Items)
{
DataRow dr = dt.NewRow();
dr[
"ID"
]=(ri.FindControl(
"TextBox1"
)
as
TextBox).Text;
dr[
"Name"
] = (ri.FindControl(
"TextBox2"
)
as
TextBox).Text;
dr[
"Telephone"
] = (ri.FindControl(
"TextBox3"
)
as
TextBox).Text;
dr[
"RegisterDate"
] = (ri.FindControl(
"TextBox4"
)
as
TextBox).Text;
dt.Rows.Add(dr);
}
return
dt;
}
protected
void
btnNew_OnClick(
object
sender, EventArgs e)
{
DataTable dt = CopyFormData();
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
ViewState.Add(
"Data"
,dt);
DataBinds();
}
protected
void
rpCustomerInfo_ItemCommand(
object
source, RepeaterCommandEventArgs e)
{
if
(e.CommandName==
"Delete"
)
{
DataTable dt = CopyFormData();
dt.Rows.RemoveAt(e.Item.ItemIndex);
ViewState.Add(
"Data"
, dt);
DataBinds();
}
}
}
}
|