2011-12-06 39 views
1

H,訪問用戶控件的aspx值

我的aspx頁面有一個usercontrol,其中usercontrol包含一個按鈕。 onclick usercontrol中的按鈕,我試圖啓動JavaScript方法。所以當我點擊按鈕來執行JavaScript以某種方式我想從aspx頁面訪問文本框的值。

this.getElementbyID[txtbox].value

可能嗎?還是有任何其他方式來訪問usercontrol的aspx頁面的控制。

由於提前, 帕

+1

如果他們對你有幫助,請隨時接受答案並投稿。這些是每個答案左側的控件。 – LarsTech

回答

1

使用FindControl在用戶控制的代碼隱藏方法。假設.aspx頁面有TextBox1控件,並且.aspx頁面是「說」用戶控件的父項,那麼您可以將以下行添加到用戶控件中按鈕的點擊處理程序中。

TextBox tx = (TextBox)Parent.FindControl("TextBox1"); 
3

是的,它是可能的,因爲在呈現整個頁面(aspx頁面+用戶控件)被視爲一個頁面。

因此,只要您知道您正在搜索的控件的客戶端ID,就可以使用任何有效的JavaScript訪問該元素。

我會把這個代碼在用戶控件

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#yourButtonID').click(function() { 
       //search for your element 
       alert($('input[id$="TextBox1"]').val()); 
      }); 
     }); 
    </script> 

希望這有助於!

+0

我喜歡使用Attribute-Ending選擇器(「$ =」)來繞過對客戶端ID的.NET操作。非常有創意,如果你不能設置ClientIDMode'靜態'。 – Graham

0

是的有幾種方法可以做到這一點。用戶控件直接呈現給瀏覽器,因此您可以從任何地方通過ID訪問元素。我會親自這樣做;在頁面

public string TextBoxID 
{ 
    get { return this.TextBox1.ClientID; } 
} 

然後,您可以使用JavaScript訪問的客戶端的ID:您可以將屬性添加到後面的用戶控件代碼

document.getElementById('<%= ucUserControlID.TextBoxID %>').value 

的問題,你將不得不如果用戶控件中的文本框位於帶有母版頁的頁面中,則ID將爲ct100_contentplaceholder_somecontainer_usercontrolcontainer_textboxID(類似於此)。規避這種情況的技巧是使用像document.getElementById("<%= TextBox1.ClientID %>")這樣的方法,但只有在控件位於此語句所在的相同容器中時纔有效。由於控件位於用戶控件中,並且頁面中的JS,返回客戶端ID的屬性效果很好。