2013-02-07 29 views
0

我必须在中继器中设置标签可见性为true或false。我必须在linkbutton的onclick事件上访问该标签。标签和linkbutton都在中继器中。所以当我点击隐藏链接按钮时,我必须隐藏标签,点击节目时我必须显示,但我没有得到该标签的控制权。 linkbutton的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; 
     } 

    } 



} 

此代码更改整行。

回答

0

,就可以把LinkButtonNamingContainerRepeaterItem,那么你有所有你需要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" 
0

你最好使用中继器的项目命令事件。然后,您可以使用以下代码从中继器项目获得控制权:

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";