2012-06-08 28 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