1

最初のリクエストが完了する前に、firefox の sharepoint 2013 の UpdatePanel で 2 番目の xmlhttprequest を実行しようとすると、ページ全体が更新されます。最初のリクエストのステータスは中止です。2 番目の要求の応答は次のとおりです。

このエラーは、添付のコードで再現できます (ボタンをすばやく 2 回クリックするとエラーが発生します)。

この問題は、このコントロールを含む Web パーツを SharePoint 2013 の発行ページに配置した場合にのみ発生します。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestUpdatePanel.ascx.cs"
Inherits="Example.TestUpdatePanel" %><asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
    <asp:CheckBoxList runat="server" ID="CheckboxList1" AutoPostBack="true">
        <asp:ListItem Text="CheckBox1" Value="valueFromCheckBox1" />
        <asp:ListItem Text="CheckBox2" Value="valueFromCheckBox2" />
        <asp:ListItem Text="CheckBox3" Value="valueFromCheckBox3" />
        <asp:ListItem Text="CheckBox4" Value="valueFromCheckBox4" />
        <asp:ListItem Text="CheckBox5" Value="valueFromCheckBox5" />
    </asp:CheckBoxList>
</ContentTemplate></asp:UpdatePanel><asp:UpdatePanel ID="UpdatePanel2" runat="server">
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="CheckboxList1" EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
    <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />
    <br />
    <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
</ContentTemplate></asp:UpdatePanel>





    protected void Page_Load(object sender, EventArgs e)
    {
        CheckboxList1.SelectedIndexChanged += CheckboxList1_SelectedIndexChanged;
    }

    private void CheckboxList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
        Label3.Text = CheckboxList1.SelectedValue;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
        Label1.Text = "Button1_Click";
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
        Label2.Text = "Button2_Click";
    }
4

2 に答える 2

0

すでにリクエストが進行中のときに、意図的にユーザーがポストバック リクエストを送信できるようにしますか? これが意図的でない場合は、サーバー側のメソッドの実行中にユーザー コントロールを無効にすることを検討してください。これは、UpdateProgress コントロールで実現できます。アイデアは、このコントロールを使用して、ポストバックが発生している間にアプリケーション全体をカバーする div をポップアップできるということです。次のように使用できます。

<asp:UpdateProgress ID="UpdateProgress1" AssociatedUpdatePanelID="UpdatePanel1" runat="server" >
   <ProgressTemplate >
      <div id="wait" style="width:100%; height:100%; 
               position:absolute; top:0; left:0; z-index:1000;background-color: #666699; 
               filter: alpha(opacity=80); text-align:center; vertical-align:middle;">
         <div style="border:5px solid black; width:200px; height:50px; 
               background- color:White; top:50%; position:absolute;">
                Saving changes.  Please wait...                                       
         </div>                                       
      </div>                                      
   </ProgressTemplate>
</asp:UpdateProgress>
于 2013-02-28T12:05:04.810 に答える