【问题标题】:Using update panel to prevent postback of RadUpload Control使用更新面板防止 RadUpload Control 回发
【发布时间】: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


【解决方案1】:

您是否在回发时再次创建控件?如果我没记错的话,应该在 init 或 preinit 上再次创建控件,以便将视图状态加载到它们中。

我猜这个视频http://www.asp.net/web-forms/videos/aspnet-ajax/how-to-dynamically-add-controls-to-a-web-page 显示了类似的内容,否则周一我可以在工作的电脑上查找自己的代码。

希望对你有帮助!

【讨论】:

  • 是的,我是,并且我能够在回发后保留所有控件的值,但 RadUpload/FileUpload 控件除外。这是出于安全原因,我正在尝试创建一个解决方法来保留这些值,因为发生的任何事件都会触发回发。我在上面尝试做的是封装按钮以在按钮单击时仅导致部分回发,以便整个页面不会回发。感谢您的意见(:
  • 好吧,对不起,我错过了你的问题:S 无论如何,为什么你的代码不能正常工作?这段代码看起来不错……有哪些症状?
  • 基本上唯一的问题是我无法获得仅影响按钮控件的部分回发:P 这是为了不删除 radupload 控件的值。我认为这是可能的.. :S
【解决方案2】:

我已经解决了这个问题,方法是从页面中完全删除这个上传控件,而是用一个加载外部上传页面的按钮(只是一个弹出窗口)替换它。我无法找到我最初想要的解决方案,但我目前的解决方案是我目前所拥有的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多