GridView 中嵌套 Repeater ,显示分级数据:
在 GridView1 的
GridView1_DataBound 事件中这样写:
protected
void
GridView1_DataBound(
object
sender, EventArgs e)
{
foreach
(GridViewRow row
in
GridView1.Rows)
{
Label LabelID
=
row.FindControl(
"
Label1
"
)
as
Label;
string
parentID
=
LabelID.Text.ToString();
Repeater subRepeater
=
row.FindControl(
"
Repeater1
"
)
as
Repeater;
string
sql
=
"
select * from CandidateUser where WantPosition = '
"
+
parentID
+
"
' order by UID asc
"
;
DataSet ds
=
newdb.CommonDataSet(sql);
subRepeater.DataSource
=
ds.Tables[
0
].DefaultView;
subRepeater.DataBind();
}
}
然后,当点击按钮,提交此页面,需要循环 GridView1 和 Repeater1 中的数据取值,存入数据库,如何取值呢,这样做:
protected
void
Button1_Click(
object
sender, EventArgs e)
{
foreach
(GridViewRow row
in
GridView1.Rows)
{
Label LabelID
=
row.FindControl(
"
Label1
"
)
as
Label;
//
竞聘职位的ID号Label
parentID
=
LabelID.Text.ToString();
//
竞聘职位的ID号
Repeater subRepeater
=
row.FindControl(
"
Repeater1
"
)
as
Repeater;
foreach
(RepeaterItem subrow
in
subRepeater.Items)
{
Label LabelUserID
=
subrow.FindControl(
"
Label2
"
)
as
Label;
//
竞聘人的身份ID号Label
CandidateUserID
=
LabelUserID.Text.ToString();
//
竞聘人的身份ID号
TextBox txbScore
=
subrow.FindControl(
"
TextBox1
"
)
as
TextBox;
//
分数 TextBox1
CandidateScore
=
txbScore.Text.ToString();
//
分数
CheckBox ckbGiveUp
=
subrow.FindControl(
"
CheckBox1
"
)
as
CheckBox;
//
分数 TextBox1
if
(ckbGiveUp.Checked
==
true
)
{
giveup
=
"
1
"
;
}
else
{
giveup
=
"
0
"
;
}
sql
=
"
insert into VoteTable (PositionID,CandidateUserID,CandidateUserScore,GiveUpVote,WhoSendTheVote) values ('
"
+
parentID
+
"
','
"
+
CandidateUserID
+
"
','
"
+
CandidateScore
+
"
','
"
+
giveup
+
"
','
"
+
getName
+
"
')
"
;
newdb.ModifyData(sql);
}
}
}