0

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

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

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

  • UpdatePanel带有隐藏按钮的设置
  • 在页面加载后创建ClientScriptManager代码以调用 Javascript 函数(第一次)
  • '单击' Javascript 函数中的按钮
  • Button_Click在方法后面的 C# 代码上执行第一个过程
  • 使用ClientScriptManagerc# 中Invoke的 Javascript 再次单击按钮
  • Button_Click在方法后面的 C# 代码上做下一个 Process

我宁愿在 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();
4

1 回答 1

0
  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 并且失败了怎么办?您必须自己管理回滚。同样,这只是原始的,但你明白了。

于 2013-01-15T10:38:59.660 回答