2013-04-26 43 views
3

我有一個帶有文本框控件(txtid)的aspx頁面(example.aspx),並且在同一頁面上創建一個帶有圖像的用戶控件(access.ascx)按鈕(click.png)。我必須將文本框(txtid)檢索到用戶控件中。我如何檢索文本框控件(txtid)在用戶控件頁面(access.ascx)中的值?如何訪問從頁面到用戶控件的文本框值

回答

2

嘗試類似:

TextBox txt= (TextBox)this.Parent.FindControl("txtid"); 

可能會包含在你的用戶控件。這個.Parent應該讓你參考example.aspx頁面。

2

在用戶控件,您可以添加一個屬性,如:

public property Text 
{ 
    .. 
} 

然後頁面可以從頁面的文本框中的值賦給這個屬性,它的用戶控件可以再使用。您也可以使用SetText(string text)方法。

1

試試這個

TextBox txt1 = (TextBox)this.Parent.FindControl("txtid") 
+1

@Paritosh已經給出了同樣的答案 – Rahul 2013-04-26 13:01:10

+0

@Rahul kisi ke回答同樣的nahi ho sakte kya ..? – 2013-04-26 13:03:48

+0

在同樣的問題兩個相同的答案與相同的控制名稱,如「txtid」,,很搞笑.. – Rahul 2013-04-26 13:07:08

1

內部用戶控件:

TextBox textBox = (TextBox)this.FindSiblingControl("txtid"); 

輔助方法:

public static class StaticClassToHandleExtensions 
{ 
    public static Control FindSiblingControl(this Control control, string id) 
    { 
     Control parent = control.Parent; 
     while (parent.GetType() != typeof(ContentPlaceHolder) && parent.GetType() != typeof(Page)) 
      parent = parent.Parent; 

     return parent.FindControl(id); 
    } 
} 

第一級Parent可能不在同一水平的控制,所以你需要更高的持續上漲。這個例子在ContentPlaceHolder上停止,它將成爲頁面的頂層,它的主頁面爲Page,它將成爲沒有母版頁的頁面的頂層。 FindControl方法將搜索其整個控件樹,這意味着它將搜索多個級別的深度,因此這是最安全和最簡單的解決方案。

+0

或您的ascx可能包含一個公共屬性Page名稱可以說MyParentPage,您可以在其中保存實際的頁面引用。 – mtsiakiris 2013-04-26 13:12:12

相關問題