2012-06-08 49 views
2

我想使用RadUpload控件,但是,在任何按鈕上單擊頁面回發。爲了解決這個問題,我嘗試使用updatePanel並將按鈕放在updatePanel中,以便只發生部分回發。原因是RadUpload Control在回發時丟失了它的值。我動態地創建所有的控件,併成爲asp.net和C#的初學者,這對我來說很棘手。使用更新面板,以防止回傳RadUpload控制

下面是代碼:

Button aButton = new Button(); 
aButton.ID = newControls[1].ID + "_Button"; 
aButton.Click += new EventHandler(aButton_Click); 
aButton.UseSubmitBehavior = false; 

AsyncPostBackTrigger trigger = new AsyncPostBackTrigger(); 
trigger.ControlID = aButton.ID; 
trigger.EventName = "Click"; 

UpdatePanel container = new UpdatePanel(); 
container.ID = newControls[1].ID + "_Container"; 
container.ChildrenAsTriggers = true; 
container.UpdateMode = UpdatePanelUpdateMode.Conditional; 
container.Triggers.Add(trigger); 
container.ContentTemplateContainer.Controls.Add(aButton); 

tcControl.Controls.Add(container); 

static void aButton_Click(object sender, EventArgs e) 
{ 
    // Do Something 
} 

我知道我可能做一些非常錯誤的哈哈,但任何意見將是巨大的。謝謝!

+0

在什麼時候該代碼的運行?我猜想你的[ASP.NET頁面生命週期](http://msdn.microsoft.com/en-us/library/ms178472.aspx)有問題。具體而言,應該始終在「PreInit」事件期間添加動態生成的控件。 – jadarnel27

+0

此代碼通過在Page_Load中調用的方法運行。應始終在PreInit中創建動態創建的控件? 我動態創建大量的控制。這部分代碼僅在創建radupload時發生。 – Eric

+0

我試圖在PreInit中放置動態控件生成方法,並且它們不會顯示在頁面上。我使用唯一的ID創建它們並將它們放入HTMLTable中。該表包含1 ... n行的任何地方,每行有兩個單元格。第一個單元格包含一個動態創建的靜態標籤。第二個包含兩個控件,一個動態創建的幾乎任何類型的控件,以及一個包含第一個控件文本的標籤。控件的在所述第二小區備用的可視性,編輯模式之間(非標記物是可見的)和非編輯方式(標籤是可見的) – Eric

回答

0

我已經解決了這個問題,完全從頁面上刪除了這個上傳控件,而是用一個加載外部上傳頁面(只是一個彈出窗口)的按鈕替換它。我無法找到我最初想要的解決方案,但我目前的解決方案就是我現在所擁有的。

0

您是否在回發中再次創建控件?如果我記不清楚,應該在init或preinit中再次創建控件,以便將viewstate加載到它們中。

這個視頻http://www.asp.net/web-forms/videos/aspnet-ajax/how-to-dynamically-add-controls-to-a-web-page顯示了類似的東西,我猜,否則在星期一我可以在我的電腦上查找我自己的代碼。

希望它能幫助!

+0

是的,我是,我能夠保留所有控件的值後回發除了RadUpload/FileUpload控制,這是由於安全方面的原因,而我想圍繞創建工作,因爲發生的任何事件觸發後回保留值。我想做上面做的是封裝按鈕,導致只有部分回發(:: – Eric

+0

)對不起,我錯過了你的問題:無論如何,你爲什麼不是上面的代碼工作?代碼看起來很好...哪些是在sympthoms –

+0

本質上,唯一的問題是,我無法獲得部分回發這隻會影響按鈕控件:?:P是這樣的radupload控件的值不會被刪除我認爲這是可能的..:S – Eric