【问题标题】:ASP.Net page load updating Update Panel [closed]ASP.Net 页面加载更新更新面板 [关闭]
【发布时间】:2013-01-15 10:26:21
【问题描述】:

我是 AJAX 新手,想知道我是否以正确的方式处理事情。

我正在构建的页面实际上只是一个进度页面。即从页面加载调用一个进程,我向页面添加一条消息以显示结果,然后另一个进程运行,我为该进程的结果添加一条新消息等,最多 10 个进程可以按顺序运行并且有没有用户交互。我不想在每次更新消息后屏幕闪烁,所以我想到了 Ajax

我实现这一目标的方式似乎很奇怪.....

  • 设置UpdatePanel,其中包含一个隐藏按钮
  • 在页面加载背后的代码上创建 ClientScriptManager 以调用 Javascript 函数(第一次)
  • “单击”Javascript 函数中的按钮
  • Button_Click 方法后面的 C# 代码上执行第一个进程
  • 使用c#中的ClientScriptManager到Javascript中的Invoke再次点击按钮
  • Button_Click 方法后面的 C# 代码上执行下一个处理

我宁愿在 C# 页面加载时启动进程并更新 UpdatePanel 而不会闪烁。!

***这是我的最新代码,使用您的建议与睡眠线程模拟将要发生的进程,但它不是实时更新......即重新计算报价和存储两个指令都完成后出现数据。

            Literal literal1 = new Literal();
            literal1.Text = "Recalculating Quotation <br/>";
            literal1.ID = "Message1";
            updpnlSubmit.ContentTemplateContainer.Controls.Add(literal1);
            updpnlSubmit.Update();

            Thread.Sleep(10000);

            Literal literal2 = new Literal();
            literal2.Text = "Storing Data<br/>";
            literal2.ID = "Message2";
            updpnlSubmit.ContentTemplateContainer.Controls.Add(literal2);
            updpnlSubmit.Update();

【问题讨论】:

  • 那么,你的问题是什么?
  • Damien,我是否明白这一点......我的意思是它有效,但它会引起人们的注意吗?

标签: c# javascript ajax asp.net-mvc


【解决方案1】:
  1. 将更新面板拖放到页面上并将其更新模式设置为 有条件的
  2. 在更新面板中,为您的处理消息放置一个标签/文字控件
  3. 在 pageLoad 事件中执行每个进程并显示一条状态消息,然后从代码隐藏中更新您的 updatePanel,例如

  4. 删除 UpdateProgress 以在处理时显示进度图像

     if (Process1())
      lblStatus.Text = " Process 1 completed.;
     UpdatePanel1.Update();
    
     // Do this for Process 2
    
     // Do this for Process 3 etc.
    

我唯一的问题是,如果进程 2 依赖于进程 1 并且失败了怎么办?您必须自己管理回滚。同样,这只是原始的,但你明白了。

【讨论】:

  • 我正在寻找实时的进度消息....如果我将处理放在页面加载中,页面加载是否必须在屏幕显示之前完成?对不起,如果我错过了重点....
  • 是的,它们将是实时的,但这取决于您的要求。如果您需要首先专门加载控件,您也可以尝试“LoadComplete”事件。 msdn.microsoft.com/en-us/library/…
  • Damien 感谢您的帮助,到目前为止,我正在使用您的位来取得进展...这是我现在从页面回发的代码
  • 正确已经在我的页面加载中摆脱了客户端脚本管理器(不需要它)并使用 UpdatePanel 页面加载来触发我的进程(好一个 Damien)只需要让消息真正触发现在是时候了....代码添加到顶部的描述中...我如何评价您的回复到目前为止它们真的很有帮助..
  • 您可以点击向上箭头为我的答案投票。此外,如果您解决了问题,您可以将其标记为答案。无论如何,看看你的代码,不要在生产中使用睡眠。如果适合您,请改用计时器控件。同样在您的代码中,不要每次都添加新文字,只需在每次更新时设置 Text 属性。
猜你喜欢
  • 2014-03-09
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 2010-09-09
  • 2013-01-24
  • 1970-01-01
相关资源
最近更新 更多