1

これは、別のスレッドの問題から発生しています....しかし、うまくいけば、1つのポイントにもっと焦点が当てられています!

AJAX 更新パネルがあります

<asp:UpdatePanel
     ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
           <ContentTemplate>
                                <asp:Label ID="lblMessage1" runat="server" />
                                <asp:Label ID="lblMessage2" runat="server" />
                                <asp:Button ID="btnTrigger" runat="server"        onclick="Button1_Click" style="visibility:hidden"/>

              </ContentTemplate>
 </asp:UpdatePanel>

そして私の背後にあるコードはこれです

 protected void Button1_Click(object sender, EventArgs e)

    {
        Type cstype = this.GetType();
        Label message1 = (Label)(FindControl("lblMessage1"));
        Label message2 = (Label)(FindControl("lblMessage2"));

        message1.Text = "adam";
        UpdatePanel1.Update();

        Thread.Sleep(5000);

        message2.Text = "adam2";
        UpdatePanel1.Update();

Adam が表示され、5 秒後に Adam2 が表示されるのを見たいのですが、両方が同時に表示されます。

4

3 に答える 3

2

パネルで呼び出しUpdateていますが、サーバー側で発生しているため、両方の呼び出しは基本的にクライアントで同時に実行されます。呼び出しUpdateは、呼び出しが返されるまで効果がありません。説明したように動作させるには、2 つの個別の呼び出し、またはクライアント側のトリガーが必要です。

于 2013-01-15T15:04:30.550 に答える
1

あなたが提供したコードは、サーバー上で値を設定し、message1.Textサーバー上で5秒間待ってから、サーバー上で設定message2.Textします...その後、すべてを一度にクライアントに送り返します。そのため、すべてが同時に更新されます。

それらを別々の時間に更新したい場合は、サーバー上の 2 つの別個のものを呼び出して、それらを個別に表示するために、より複雑なコーディングが必要になります。

そのためには、おそらく 2<asp:UpdatePanel>つのオブジェクトを調べるか、javascript/jquery で独自の AJAX 処理コードを作成する必要があります。

于 2013-01-15T15:05:21.467 に答える
0

2 つのラベル、2 つのボタンを 2 つの異なる更新パネルに分けてみてください。次に、それらをさらに 5 秒間連続してトリガーします。

HTML:

<asp:UpdatePanel
     ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
           <ContentTemplate>
                <asp:Label ID="lblMessage1" runat="server" />
                <asp:Button ID="btnTrigger1" runat="server"        onclick="Button1_Click" style="visibility:hidden"/>
              </ContentTemplate>
 </asp:UpdatePanel>

<asp:UpdatePanel
     ID="UpdatePanel2" runat="server" UpdateMode="Conditional" >
           <ContentTemplate>
                 <asp:Label ID="lblMessage2" runat="server" />
                 <asp:Button ID="btnTrigger2" runat="server"        onclick="Button2_Click" style="visibility:hidden"/>
           </ContentTemplate>
 </asp:UpdatePanel>

<script>
     window.onload = function(){
          document.getElementById("<%= btnTrigger1.ClientID %>").click();
          // wait 5 secs to trigger 2nd button
          setTimeout(function(){
                document.getElementById("<%= btnTrigger2.ClientID %>").click();
          }, 5000);
     };
</script>

CS:

protected void Button1_Click(object sender, EventArgs e)
{
    Type cstype = this.GetType();
    Label message1 = (Label)(FindControl("lblMessage1"));

    message1.Text = "adam";
    UpdatePanel1.Update();
}

protected void Button2_Click(object sender, EventArgs e)
{
    Type cstype = this.GetType();
    Label message2 = (Label)(FindControl("lblMessage2"));

    message2.Text = "adam2";
    UpdatePanel1.Update();
}
于 2013-01-15T15:17:05.310 に答える