2014-02-19 37 views
0

我有一個用戶控件,其中包含一些控件並將其放到父頁面中。將用戶控件的值傳遞給父頁面的奇怪問題

點擊用戶控件中的服務器端按鈕,我調用一個方法。

當上面的按鈕被點擊到父頁面的JavaScript函數時,我需要傳遞一個值。

我在用戶控件中創建了一個私有變量及其公共屬性。

單擊按鈕時將一些字符串分配給公共屬性。

在父aspx.cs頁面中,我通過Page_Load中的用戶控件ID檢索上述屬性的值,並將其分配給父aspx頁面中定義的隱藏變量。

現在,當我試圖在父頁JavaScript函數中獲取此隱藏變量的值時,它的值爲空。

任何其他方法來傳遞值,首先我想到會話變種的,但然後會話變種的JavaScript將不會有效。

下面是我的代碼,我曾嘗試:

用戶控件ascx.cs頁:

private string _button1Clicked; 
     public string Button1Clicked 
     { 
      get { return _button1Clicked; } 
      set { _button1Clicked = value; } 
     } 

public void Button1_Click(object sender, EventArgs s) 
     { 
      PopulateOtherViews(); 
      Button1Clicked = "Button1Clicked";   
     } 

父頁面aspx.cs頁:

protected void Page_Load(object sender, EventArgs e) 
      { 
       hiddenButton1Click.Value = filter.Button1Clicked; 
      } 

父頁的aspx頁面:

<input type="hidden" id="hiddenButton1Click" runat="server" /> 
    function PageLoad() 
    { 
    var x = document.getElementById('hiddenButton1Click');//x.Value is "", empty 
    if (x.value == "Button1Clicked") 
         { 
          doOpenFilterCollapse(); 
         } 
         else { 
          doCloseFilterCollapse(); 
         } 
    } 
} 

專家請在這裏協助。任何指針都會非常有幫助。

問候

阿努拉格

+0

你hiddenButton1Click是RUNAT = 「服務器」。我認爲你需要在javascript調用它與'<%= hiddenButton1Click .ClientID%>' –

+0

讓我嘗試添加ClientID太..謝謝你 – Anurag

+0

歡迎:) –

回答

0

在JavaScript試試這個,而不是這個

var x = document.getElementById('hiddenButton1Click'); 
+0

讓我嘗試添加ClientID太..謝謝 – Anurag

0

你隱藏CTL是runat="server"所以,如果你檢查頁面元素,你會看到

var x = document.getElementById('<%= hiddenButton1Click.ClientID %>'); 

ctl00_ +控件 ID。 因此,在當前的JavaScript就無法找到hiddenButton1Click所以你需要

'<%=hiddenButton1Click .ClientID%>'

相關問題