3

我试图在页面移动(分页)之前获取所有转发器选择的转发器项目复选框,并将它们存储在某个地方。

 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() 事件,返回正确数量的项目,但它发生在选择复选框之前而不是之后。

我能做些什么?

4

2 回答 2

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)
            {

            }
        }
    }
于 2009-06-29T05:21:48.383 回答
0

中继器没有内置分页(如GridView或其他复杂控件),因此它不提供诸如PageIndexChanging. 因此,我假设您有自己的页面导航实现。因此,您应该调用您在该已实现函数中提供的函数。

如果问题与分页无关,我会简单地建议这些ItemDataBound/ItemCreated事件。

于 2009-06-28T11:20:14.460 回答