如何在特定行的转发器中访问标签控件

时间:2013-02-07 11:22:04

标签: c#

我必须在转发器中设置标签可见性为true或false。我必须在linkbutton的onclick事件上访问该标签。标签和链接按钮都在转发器中。因此,当我点击隐藏链接按钮时,我必须隐藏标签,当点击显示我必须显示。但我没有获得该特定的标签控制。链接按钮的onclick事件只有特定的行应该改变。

 protected void lnkshow_onclick(object sender, EventArgs e)
    {
        LinkButton lnkshow = (LinkButton)sender;
        //RepeaterItemCollection rc = rList.Items;
        int intSOid=Convert.ToInt32(lnkshow.CommandArgument);

    // update flag into database as hide or show
    string flag = ARIData.updateIntoInvoiceItemsTable(intSOid);
    if (flag == "Y")
    {
        lnkshow.Text = "Show";
    }
    else
    {
        lnkshow.Text = "Hide";
    }
    RepeaterItemCollection rc = rList.Items;

    Label lbreakdown = default(Label);
    foreach (RepeaterItem Item in rc)
    {
        lbreakdown = (Label)Item.FindControl("lBreakdown");
        if (flag == "Y")
        {
            lbreakdown.Visible = false;
        }
        else
        {
            lbreakdown.Visible = true;
        }

    }



}

此代码会更改整行。

2 个答案:

答案 0 :(得分:0)

您可以将NamingContainer的{​​{1}}投射到LinkButton,然后您就拥有RepeaterItem标签所需的一切:

FindControl

答案 1 :(得分:0)

您最好使用转发器的Item Command事件。然后,您可以使用以下代码从转发器项获取控件:

int intSOid=Convert.ToInt32(lnkshow.CommandArgument);
// update flag into database as hide or show
string flag = ARIData.updateIntoInvoiceItemsTable(intSOid);

RepeaterItem item = (RepeaterItem)((Control)e.CommandSource).NamingContainer;
LinkButton lnkshow = (LinkButton)item.FindControl("lnkshow");
Label lbreakdown = (Label)item.FindControl("lBreakdown");

lnkshow.Text =  flag == "Y" ? "Show" : "Hide";
lbreakdown.Visible = flag != "Y";