2012-08-15 41 views
0

我的代碼如下。無法更新用戶控件ASP.net更新面板中的標籤

<div class="table"> 
     <asp:UpdatePanel runat="server" ID="labelPanel" UpdateMode="Conditional" > 
      <ContentTemplate> 
       <asp:Label Text="" runat="server" ID="Cost"></asp:Label> 
      </ContentTemplate> 
     </asp:UpdatePanel> 

     <uc1:ucPartsListing ID="ucPartsListing" runat="server" /> 

    </div> 

現在用戶控件ucPartsListing本身具有2個更新面板。在某些情況下,從用戶控件觸發到父aspx的事件。
在這種情況下,我試圖設置aspx文件中存在的標籤值。我從代碼隱藏手動調用更新。 但它不起作用。我哪裏錯了?

public partial class PartsEnquiry : BaseAuthPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ucPartsListing.OnQuotePartsItemSelect += new ascx.ucPartsListing.QuotePartsItemEventHandler(ucPartsListing_OnQuotePartsItemSelect); 
    } 

    void ucPartsListing_OnQuotePartsItemSelect(string price) 
    { 
     Cost.Text = price; //This is not working ! 

     labelPanel.Update(); 
    } 
+0

嘗試設置div來的Runat =「服務器」 – leonsas 2012-08-15 02:53:53

+0

你是不是想改變'ucPartsListing'用戶控件內從一個UpdatePanel在'Cost'標籤的文本? – user1429080 2012-08-15 04:26:47

+0

@ user1429080 - 是的! – GuruC 2012-08-15 04:48:55

回答

0

設置你的「無效ucPartsListing_OnQuotePartsItemSelect(串價格)」方法中設置斷點,看看它是否被擊中的。 我不確定您使用的用戶控件是什麼,但無論是應該觸發事件的控件,都嘗試將其AutoPostBack屬性設置爲True。

+0

是的,它擊中斷點..但不顯示!該事件如果在用戶控件的代碼後面觸發,所以這裏沒有AutoPostBack的問題 – GuruC 2012-08-15 02:41:35

0

我認爲你現在的結構很不幸。

當你的用戶控件中的UpdatePanel在瀏覽器中發射,它將更新是其自身內部頁面的一部分。您無法更新執行的UpdatePanel之外的控件。

在外部UpdatePanel上手動調用Update()方法將無濟於事,因爲在客戶端它仍然是接收輸出並更新html樹的內部UpdatePanel之一。

爲了得到它的工作,你將不得不以某種方式引發外的UpdatePanel將能夠更新成本的標籤。

+0

如何觸發外部更新面板?我嘗試使用一些Asynctriggers,但沒有任何作品! – GuruC 2012-08-22 06:40:35

相關問題