c# - 如何从 asp :Repeater? 循环遍历项目模板中的项目

标签 c# asp.net repeater

我有一个中继器,它在 preRender 上与项目绑定(bind)。在项目模板中,每一行都有一个复选框。这很好用。

我试图在项目模板绑定(bind)后循环遍历项目模板中的所有复选框。有什么办法吗?

最佳答案

我觉得您想使用 ItemDataBound 事件。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound.aspx

您需要检查 RepeaterItem 的 ItemType,这样您就不会试图在 Header/Footer/Seperator/Pager/Edit 中找到复选框

您的事件看起来类似于:

void rptItems_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var checkBox = (CheckBox) e.Item.FindControl("ckbActive");

        //Do something with your checkbox...
        checkBox.Checked = true;
    }
}

可以通过在您的代码后面添加事件来引发此事件,如下所示:

rptItems.ItemDataBound += new RepeaterItemEventHandler(rptItems_ItemDataBound);

或者将其添加到客户端的控件中:

onitemdatabound="rptItems_ItemDataBound"

或者,您可以按照其他人的建议进行操作并迭代 RepeaterItems,但是您仍然需要检查项目类型。

foreach (RepeaterItem item in rptItems.Items)
{
    if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
    {
        var checkBox = (CheckBox)item.FindControl("ckbActive");

        //Do something with your checkbox...
        checkBox.Checked = true;
    }
}

在绑定(bind) Repeater 之后,您可能希望在 Page PreRender 中执行此操作。

关于c# - 如何从 asp :Repeater? 循环遍历项目模板中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6281559/

相关文章:

c# - WPF ListView 与 DataGrid 性能

c# - 使用 Log4Net 时未创建日志文件

c# - rdr 是一个 'variable' 但像 'method' 一样使用

c# - 当新控件添加到 .aspx 时,Designer.cs 不更新

c# - 如何将参数传递给中继器中的用户控件

asp.net - 访问 Repeater 内的 <LI> 类

c# - 使用 protobuf-net,是否可以在不分配内存的情况下反序列化消息?

ASP.NET OpenWebConfiguration 失败

c# - 动态添加未知类型的控件并在控件上调用方法

ASP.net 转发器显示正确格式的图像和文本