2009-12-14 40 views
0

我已經創建了自己的控件,其中包含作爲子控件的TextBox控件。此文本框設置了自動回送。當回傳被調用時,我不會在request.querrystring中獲得任何文本。 我應該在哪裏指定輸入到texbox中的文本將被髮送到響應?或者有沒有更簡單的方式發送這些信息?我想在回發後在文本框中再次輸入文本。如何添加TextBox的響應? c#

謝謝

回答

0

動態創建的控件,您需要創建他們,他們在Page_Init添加到控件樹()事件; Page_Load()太晚了,而Page_PreRender()太遲了。

一旦控件樹,運行時將回傳後還原爲您控制的狀態。您可以使用myTextBox.Text訪問控件的內容 - 不需要使用Request.QueryString

對於僅包含文本框的控件,如果您使用的是用戶控件而非INamingContainer,事情會更容易。這樣,你可以在你的.ascx標記中使用<asp:TextBox>

+0

謝謝,那很大的 – user247458 2009-12-15 07:03:22

+0

我知道你在這裏是新的,但習慣上upvote是有幫助的答案... – RickNZ 2009-12-15 09:37:44

0

自定義控件?像這樣的任何發佈的控件都會將其數據加載到LoadPostData方法中。您可以在自定義的控件類覆蓋此,並從由德控制訪問該值:

變種文字= postDataCollection [textboxID]

定製控件中的文本框都必須有一個ID。

如果是別的東西說話,讓我知道的細節。

謝謝。

+0

爲響應您好感謝。 這是我的控制縮寫代碼。這個控件會導致回發,但沒有回覆。也許你是正確的loadpostdata,但我沒有這個方法被重寫在我的控制。 公共類my_control:對照,作INamingContainer { 保護覆蓋無效的OnPreRender(EventArgs的發送) { 文本框mytextbox =新文本框(); mytextbox.ID =「name」; mytextbox.AutoPostBack = true; Controls.Add(mytextbox); }} 我 – user247458 2009-12-15 00:04:21

+0

道歉。一些控件實現了這一點,但由於您是從控件繼承的,因此添加名稱空間IPostbackDataHandler,它將爲您添加此內容,並允許您處理回發數據。你應該能夠通過ID獲得它......但它將是clientID或uniqueID(忘記哪一個)。 – 2009-12-17 21:17:04

0
  1. (文本框)Control.FindControl( 「控件ID」)
  2. 在回傳獲取動態控制的價值的Request.Form( 「控制客戶端ID」)
相關問題