發現文本框我有一個頁面上的文本框,但是當我使用無法在頁面
TextBox formTextBox = Page.FindControl(textBox) as TextBox;
它回來null
。有沒有解決的辦法?我知道控件在頁面上,但我無法找到它。
感謝
發現文本框我有一個頁面上的文本框,但是當我使用無法在頁面
TextBox formTextBox = Page.FindControl(textBox) as TextBox;
它回來null
。有沒有解決的辦法?我知道控件在頁面上,但我無法找到它。
感謝
如果您使用MasterPages
發現,這控件位於ContentPlaceholder
的頁面中,因爲該頁面的ControlCollection
中唯一的控件是MasterPage本身,所以無法直接通過FindControl
獲得對控件的引用。 這很有道理。當控件位於使用MasterPage的頁面的頂層時,您無法保證該ID是唯一的,因爲其他ContentPages也可能擁有此ID的控件,並且現在可以返回另一個控件,而不是明天。
如果你看看你想找到的控制的NamingContainer
,你會發現如果是MasterPage
這是ContentPlaceHolder
,並且在「正常」頁面的情況下它是頁面本身。
所以,你需要首先得到的母版的的ContentPlaceHolder參考之前,你可以找到通過的FindControl控制:
Page.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1");
http://msdn.microsoft.com/en-us/library/xxwa0ff0.aspx
但是你爲什麼不乾脆直接引用您的控制 ?例如:
this.TextBox1.Text = "Hello World";
順便說一句,這是從my own answer on a similar question得出的。
我很好奇他爲什麼不直接引用它。 – jcolebrand 2012-03-01 16:42:31
兩種情況之一發生了......無論是控制不被發現(這是最有可能的),或者未返回TextBox
對象。
關於FindControl
要記住的事情是它不是遞歸的......它只會查看頂級子控件。所以,如果你的文本框嵌套在另一個控件中,它將不會被找到。你可以read the MSDN docs here。
你可能想使自己的FindControl的版本,這將使嵌套控件內搜索 - 實現這種方法是簡單,而且很容易地使用谷歌,富
我確定遞歸查找器已經存在,他只需要查找它。 – jcolebrand 2012-03-01 16:22:11
嗨,它只是在一個div中。 – 2012-03-01 16:23:53
@jcolebrand其他人已經寫過這樣的內容,但它不存在於API中。你必須自己實現它或借用別人的 – 2012-03-01 16:24:57
地方放支架繞文本框的標記,像這樣:
TextBox formTextBox = MyPlaceHolder.FindControl("MyTextBox") as TextBox;
什麼'textBox':
然後你就可以用鰭文本框? – SLaks 2012-03-01 16:17:39
你知道控件在頁面上,但是**哪裏**?你能收到你的標記嗎?除此之外,你在使用'MasterPages'嗎?如果這是真的,請查看我對另一個問題的回答:http://stackoverflow.com/a/8163964/284240 – 2012-03-01 16:18:12
它是否位於母版頁的內容區域中? – Zachary 2012-03-01 16:20:09