繁体   English   中英

如何在ASP中继器中找到标签

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM