2013-03-24 74 views
1

我有一個動態控件頁面,包括文本框,單選按鈕,複選框(都綁定到面板)。動態控件回發更新面板

我在Page_init函數上運行我的創建控制函數。

所以我有這樣的事:

protected void Page_Init(object sender, EventArgs e) 
    { 
     PopulateControls(); 
    } 

    protected void PopulateControls() 
    { 
     .... 
     for (int j = 0; j < dt.Rows.Count; j++) 
     { 
      ...create dynamic controls 
     } 
     Panel1.Controls.Add(dynamic controls); 

    } 

回發(例如,當我取消選中複選框)屏幕跳轉到頂部。

通常,當我不使用動態控件時,我只需在每個控件周圍放置UpdatePanel/ContentTemplate。但是因爲我現在無法做到這一點,有沒有辦法阻止頁面跳回頂部回發?

謝謝!

+0

您在標題,問題和標籤中都有'UpdatePanel',但是您使用了嗎? – 2013-03-24 22:41:08

+0

我想知道如何動態使用它? – 2013-03-24 22:47:34

+1

是的,但是如果用'UpdatePanel'代替'Panel1',它應該可以工作。你試過了嗎?您必須將它們添加到['ContentTemplateContainer.Controls'](http://msdn.microsoft.com/zh-cn/library/system.web.ui.updatepanel.contenttemplatecontainer.aspx)。 – 2013-03-24 22:54:59

回答

3

您可以動態地將控件添加到UpdatePanel。 您必須將它們添加到ContentTemplateContainer.Controls

​​
+0

非常感謝小費!我會放棄它! – 2013-03-24 23:00:37

+0

@viv_acious:當然你也可以在'UpdatePanel'中添加一個'Panel',該''UpdatePanel''被聲明性地添加並且在面板上使用'Controls.Add'。 – 2013-03-24 23:09:30

+0

你好,我不知道我是否正確,因爲它不工作。在我的.aspx頁面上,我有控件。然後,在我的代碼隱藏中,我將每個動態控件的代碼替換爲舊的Panel1。現在我的文本框清空每次有回發,我無法取消選中複選框!有任何想法嗎?!非常感激! – 2013-03-25 23:41:22

2

您的代碼

Panel1.Controls.Add(dynamic controls); 

表明你正在使用面板而不是的UpdatePanel。使用UpdatePanel與使用面板的方式相同,唯一的例外是您將向ItemTemplate而不是面板添加控件。在Panel的情況下,它直接保存控件,因爲它是一個容器,而在UpdatePanel的情況下,它是包含屬性或控件的ContentTemplateContainer。因此,您可以使用類似於下面的內容代替上述內容。

UpdatePanel1.ContentTemplateContainer.Controls.Add(button1); 

也請務必包括您的體內這行代碼迴路如果要創建一個以上的控制。

希望這會有所幫助。

+0

嗨Liaqat,我已經用你的建議替換我的面板與UpdatePanel,它現在行事怪異 - 文本框在回發清除,我不能取消複選框...任何想法如何解決這個問題?非常感激! – 2013-03-25 23:44:30

+1

別擔心 - 我不認爲updatepanel是這裏的問題!感謝你的幫助! – 2013-03-26 00:09:00