我试图在页面移动(分页)之前获取所有转发器选中的转发器项目的复选框,并将它们存储在某个地方。
foreach (RepeaterItem ri in rpt.Items)
{
CheckBox box = (CheckBox)ri.FindControl("chkBox");
if (box.Checked)
{
...
}
}
问题是我从哪里调用此功能? 我试图从ObjectDataSource1_Selected(我使用objectdatasource填充转发器)和ObjectDataSource1_Selecting调用它,但rpt.Items.Count也是0。
rpt_PreRender()事件,返回正确数量的项目,但它在选中复选框之前发生,而不是之后。
我该怎么办?
答案 0 :(得分:7)
您正在寻找的方式是不可能的......请尝试使用此代码...
if (Repeater1.Items.Count > 0)
{
for (int count = 0; count < Repeater1.Items.Count; count++)
{
CheckBox chk = (CheckBox)Repeater1.Items[count].FindControl("CheckBox1");
if (chk.Checked)
{
}
}
}
答案 1 :(得分:0)
Repeater没有内置分页(如GridView
或其他复杂控件),因此它不提供PageIndexChanging
等事件。因此,我假设您有自己的页面导航实现。因此,您应该调用您在该实现函数中提供的函数。
如果问题与分页无关,我只是建议ItemDataBound/ItemCreated
事件。