2010-04-22 57 views
0

我創建了一個用戶控件。此用戶控件動態加載到Telerik Panelbar控件內的頁面上。我已經完成了所有必要的編碼來保存視圖狀態,並在每次頁面加載時加載這個動態創建的用戶控件。 在這個用戶控件上我有一個asp面板。默認情況下這個面板是不可見的。當用戶單擊該用戶控制面板上的按鈕時可見。在此用戶控件的頁面加載時,我填充此面板上的所有控件。 一切工作正常,如果我不動態加載此使用控件,但是當我動態加載此用戶控件,如果我使面板默認可見,那麼只有面板上的所有字段填充。但是,如果我使默認情況下不可見,並且在按鈕上單擊使面板可見,則不會填充任何文本框或組合框。 我在用戶控件的頁面加載時填充組合框,但在用戶控件中的所有組合框中回傳鬆散數據。 在父頁面上我正在保存視圖狀態 這是我在父頁面上的代碼來動態加載userControl(其上有面板) Dim ucPiggyBank As SubscriberSetupPages_UserControls_PiggyBank = CType(LoadControl(「〜/ SubscriberSetupPages/UserControls/PiggyBank.ascx」 ),SubscriberSetupPages_UserControls_PiggyBank) 隨着ucPiggyBank .PiggyBankID = account.Id .ID = account.Id.ToString 「設置這裏以下3個屬性,以避免數據庫時刻表 .PiggyBankEligibleAccounts = piggyBankEligibleAccountCollection .MemorizedNames = memorizednames .Period =週期 結尾
radPanelNewChild.Controls.Add(ucPiggyBank) radPanelNew.Items.Add(radPanelNewChild) radPanelNew.Expanded = True '這是Telerik Panelbar控件父頁面上的Panel項目。 昏暗radPanelPiggyBank作爲RadPanelItem = DirectCast(pnlbarPiggyBank.FindItemByValue( 「TestItem」),RadPanelItem) 隨着radPanelPiggyBank .Items.Add(radPanelNew) .DataBind() 尾隨着 「我對父母控制節視圖狀態所做的一切 這是用戶控件 的頁面加載代碼如果沒有的IsPostBack然後加載用戶控件動態丟失數據

 If m_PiggyBankID <> Guid.Empty Then 
      'Load data 
      Call GetPiggyBankDetails() 
     End If 

我對用戶的控制,這使得面板可見編輯按鈕。它使面板可見但沒有數據。 你能告訴我發生了什麼事嗎? 在此先感謝。

回答

0

如果發佈數據,您可以從Request.Form [control.UniqueID]中獲取它,但如果控件動態添加,則不要使用viewstate可能性。

+0

我試圖做的是顯示當用戶控件上的編輯按鈕被點擊(在asp面板上)(這是在asp面板上)的第一次加載這些填充的所有細節。但是,當我在編輯點擊時可見時,他們不會再被填充。但默認情況下,如果我保持面板可見,我會看到所有控件都已填充。這意味着通過編輯按鈕發送的回發信息會丟失數據。它不應該。我不明白髮生了什麼事。 – user228777 2010-04-22 13:43:51

+0

基本上,如果您需要通過從Request.Form分配值來開始編輯控件填充字段,這意味着如果你有控制txtName你可以像這樣從表單填充txtName.Text = Request.Form [txtName.UniqueID] .ToString();基本上,如果您要動態添加控件而不是該控件的視圖狀態,但您也可以使用ViewState [「name」]訪問現有視圖狀態 – 2010-04-22 17:00:08

+0

如何填充這些控件在這裏不是問題。我在INVISIBLE面板的頁面加載中填充它們。當我通過按鈕點擊進行PANEL VISIBLE時。在頁面加載時,控件應該只顯示預填充的值。我只是讓面板可見而已。但是所有的文本框都是空的。我爲什麼要重新填充它們?我知道與帖子後面的頁面重寫強調值保存在viewatate。 – user228777 2010-04-22 17:08:52