我的aspx頁面有一個usercontrol,其中usercontrol包含一個按鈕。 onclick usercontrol中的按鈕,我試圖啓動JavaScript方法。所以當我點擊按鈕來執行JavaScript以某種方式我想從aspx頁面訪問文本框的值。
像
this.getElementbyID[txtbox].value
。
可能嗎?還是有任何其他方式來訪問usercontrol的aspx頁面的控制。
由於提前, 帕
我的aspx頁面有一個usercontrol,其中usercontrol包含一個按鈕。 onclick usercontrol中的按鈕,我試圖啓動JavaScript方法。所以當我點擊按鈕來執行JavaScript以某種方式我想從aspx頁面訪問文本框的值。
像
this.getElementbyID[txtbox].value
。
可能嗎?還是有任何其他方式來訪問usercontrol的aspx頁面的控制。
由於提前, 帕
使用FindControl
在用戶控制的代碼隱藏方法。假設.aspx頁面有TextBox1
控件,並且.aspx頁面是「說」用戶控件的父項,那麼您可以將以下行添加到用戶控件中按鈕的點擊處理程序中。
TextBox tx = (TextBox)Parent.FindControl("TextBox1");
是的,它是可能的,因爲在呈現整個頁面(aspx頁面+用戶控件)被視爲一個頁面。
因此,只要您知道您正在搜索的控件的客戶端ID,就可以使用任何有效的JavaScript訪問該元素。
我會把這個代碼在用戶控件
<script type="text/javascript">
$(document).ready(function() {
$('#yourButtonID').click(function() {
//search for your element
alert($('input[id$="TextBox1"]').val());
});
});
</script>
希望這有助於!
我喜歡使用Attribute-Ending選擇器(「$ =」)來繞過對客戶端ID的.NET操作。非常有創意,如果你不能設置ClientIDMode'靜態'。 – Graham
是的有幾種方法可以做到這一點。用戶控件直接呈現給瀏覽器,因此您可以從任何地方通過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的屬性效果很好。
如果他們對你有幫助,請隨時接受答案並投稿。這些是每個答案左側的控件。 – LarsTech