【发布时间】:2012-06-12 15:34:07
【问题描述】:
我正在尝试使用 RadUpload 控件,但是,在任何按钮上单击页面回发。为了解决这个问题,我尝试使用 updatePanel 并将按钮放在 updatePanel 中,以便只发生部分回发。原因是 RadUpload 控件在回发时失去了它的价值。我正在动态创建所有控件,作为 asp.net 和 C# 的初学者,这对我来说很棘手。
代码如下:
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
}
我知道我可能做错了什么哈哈,但任何建议都会很棒。谢谢!
【问题讨论】:
-
该代码在什么时候运行?我猜你的ASP.NET Page Life Cycle 有问题。具体来说,应始终在“PreInit”事件期间添加动态生成的控件。
-
此代码通过在 Page_Load 中调用的方法运行。是否应该始终在 PreInit 中创建动态创建的控件?我正在动态创建大量控件。这一小部分代码仅在创建 radupload 时出现。
-
我尝试将动态控件生成方法放在 PreInit 中,但它们没有显示在页面上。我用唯一的 ID 创建它们并将它们放在 HTMLTable 中。该表包含 1...n 行,每行有两个单元格。第一个单元格包含一个动态创建的静态标签。第二个包含两个控件,一个几乎任何类型的动态创建的控件,以及一个包含第一个控件的文本的标签。第二个单元格中控件的可见性在编辑模式(非标签可见)和非编辑模式(标签可见)之间交替
-
嗯。我对以这种方式创建控件并不是非常熟悉,我只知道这是人们遇到的常见陷阱。是的,动态创建的控件应始终在
PreInit中创建/重新创建,以获得最稳定的性能。对不起,我没有提供很多帮助。希望有人能来帮助你更多。 -
感谢您的尝试(:请务必保留有关使用 PreInit 的建议以供将来参考!
标签: c# asp.net file-upload updatepanel postback