[英]How to find a label in a asp repeater
我的ASP结构:中继器
repeater
updatePanel
label1 (rating)
button (updates rating)
some_picture (thing being rated)
/update panel
/repeater
想象一下上面包含100行的转发器的输出。 (1个标签,每行1个按钮)。
目标:当我单击按钮时,我希望更新适当的标签。 我不知道该怎么做。 我可以通过以下方式引用标签:
Label myLabel2Update = (Label)Repeater1.Controls[0].Controls[0].FindControl("Label1");
但是当然,每次都会使用相同的标签(不一定需要更新标签)。 我需要更新与按钮位于同一行的标签。
任何指导将不胜感激。
处理转发器的ItemCommand事件。 在事件处理程序中,检查事件参数的Item属性,并在其上使用findcontrol。 例如
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
Label Label1 = (Label)e.Item.FindControl("Label1");
}
Label1将是与单击按钮相同的标签。
或针对Wily博士的学徒的评论,您可以执行以下操作
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "bClick":
Label Label1 = (Label)e.Item.FindControl("Label1");
/*do whatever processing here*/
break;
}
}
然后为每个按钮指定命令名称“ bClick”
您将需要一个辅助方法来遍历层次结构,或为此使用Control的FindControl(string id)
方法。
例:
var stateLabel = (Label)e.Row.FindControl("_courseStateLabel");
我假设按钮有一个事件处理程序? 如果是这样,您应该可以
protected virtual void OnClick(object sender, EventArgs e)
{
var label = ((WebControl)clickedButton).Parent.FindControl("Label1");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.