0

私はAJAXを初めて使用し、正しい方法で物事に取り組んでいるかどうか疑問に思いました。

私が作成しているページは、文字通り単なる進捗ページです。つまり、プロセスがページの読み込みから呼び出され、結果を表示するメッセージをページに追加してから、別のプロセスを実行し、そのプロセスの結果などの新しいメッセージを追加します。最大10個のプロセスを順番に実行できます。ユーザーの操作はありません。更新メッセージが表示されるたびに画面がちらつくことを望まなかったので、Ajaxについて考えました。

私がこれを達成した方法は奇妙に思えます.....

  • UpdatePanel隠しボタンを使用してセットアップ
  • ページ読み込みの背後にあるコードを作成しClientScriptManagerて、Javascript関数を呼び出します(初回)
  • Javascript関数のボタンを「クリック」します
  • Button_Clickメソッドの背後にあるC#コードで最初のプロセスを実行します
  • ClientScriptManagerJavascriptのC#でを使用してInvoke、ボタンをもう一度クリックします
  • Button_Clickメソッドの背後にあるC#コードで次のプロセスを実行します

UpdatePanelC#ページの読み込みでプロセスを開始し、フラッシュせずに更新したいだけです。

* * *これは、実行されるプロセスをエミュレートするスリープスレッドでの推奨事項を使用した最新のコードですが、リアルタイムでは更新されません。つまり、見積もりの​​再計算とデータの保存は、両方の手順が完了した後に表示されます。

            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 に答える