作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个中继器,它在 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/
我是一名优秀的程序员,十分优秀!