1

状況は次のとおりです。ボタンがあり、それをクリックすると、いくつかのステートメントが実行され、いくつかのステータス メッセージを表示したいと考えています。

 protected void Button1_Click(object sender, EventArgs e)
 {
    //executes some statements
    //shows some status message like "Done"
 }

ラベル テキストを使用してさまざまなステータス メッセージを表示することを考えましたが、ラベル テキストはメソッドが完了したときに最後のステータス メッセージしか表示しません。中間のステータスメッセージが表示されません....何が間違っていますか?

4

5 に答える 5

1

ASP.Net は、意図したとおりに機能しません。メソッド全体が終了し (ラベルを 1 つの最終値のみに更新)、ページをレンダリングします (ラベルの最終値を使用)。

あなたが探していることを行うには、次の2つの方法が考えられます。

1) 一連の Web サービス メソッドを作成し、ajax を使用してそれぞれを呼び出します。各 ajax 呼び出しの後、クライアント側でラベル (div) を更新します。

2) ページがレンダリングされたらすぐにページを再送信します (現在の操作が完了します)。プロセスのどこにいるのか (4 つの操作のうち 2 つなど) を知るために、ページの状態を保持する必要があります (非表示のフォーム変数またはセッション変数をインクリメントし、ページの読み込みでその変数の値を使用して場合にどうするかを決定しますIsPostback。)

于 2013-04-01T02:50:57.660 に答える
1

いくつかのフォーマットも許可するリテラルを使用することもできます

<asp:Literal ID="ltrlMessages" runat="server"></asp:Literal>

protected void Button1_Click(object sender, EventArgs e)
{
    ltrlMessages.Text = "status message one";
    //
    //executes some statements
    //
    ltrlMessages.Text += "</br> status message two";
    //
    //some other statements
    //
    ltrlMessages.Text += "</br> status message three and so on";

}
于 2013-04-01T06:12:57.780 に答える
1

または、次のようにしてみてください。

Label1.Text = "First Status";
// Do something
Label1.Text += "\nSecond Status";
// Do something again
Label1.Text += "\nDone!!";
于 2013-04-01T03:39:26.593 に答える
0

試す

Label1.Text="starting stuff";
this.refresh();
//do stuff
Label2.Text="finishing stuff";

this.refresh() は、デフォルトでは最後ではなく、メソッドの途中で画面を再描画します。

于 2013-06-21T16:37:19.713 に答える