2013-02-07 53 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";