如何访问中继器中针对特定行的标签控制

本文关键字:控制 标签 何访问 访问 中继器 | 更新日期: 2023-09-27 17:58:13

我必须在中继器中设置标签可见性true或false。我必须访问链接按钮的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;
        }
    }

}

此代码更改整行。

如何访问中继器中针对特定行的标签控制

您可以将LinkButtonNamingContainer转换为RepeaterItem,然后您就可以获得FindControl所需的所有标签:

LinkButton lnkshow = (LinkButton)sender;
int intSOid = Convert.ToInt32(lnkshow.CommandArgument);
string flag = ARIData.updateIntoInvoiceItemsTable(intSOid);
RepeaterItem item = (RepeaterItem) lnkshow;
Label lbreakdown = (Label) item.FindControl("lbreakdown");
lbreakdown.Visible = flag != "Y"

您最好使用中继器的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";