1

手動で更新するように設定UpdatePanel1.UpdateMode = UpdatePanelUpdateMode.Conditional;していますが、ここに同様のイベントがある場合、一部のカスタムイベントでは機能しません。

protected void Button1_Click(object sender, EventArgs e) {
    discovery.FindAlreadyRegisteredServices();
    discovery.discoveryClient.FindCompleted += FoundEvent;

protected void FoundEvent(object sender, FindCompletedEventArgs e) {
    Label1.Text = (discovery.endpoints.Count > 0) ? discovery.endpoints[0].Address.ToString() : "nothing";
    UpdatePanel1.Update();
    }

私のプロジェクトは次のように失敗しています:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.ServiceModel.Internals.dll

Additional information: The Update method can only be called on UpdatePanel with ID 'UpdatePanel1' before Render.

設定してもしChildrenAsTriggersなくても。エラーメッセージがはっきりしないので、イベントを処理した直後に更新を処理するにはどうすればよいですか?

添加:

aspx:

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
        <asp:ListView ID="ListView1" runat="server">
        </asp:ListView>
    </ContentTemplate>
</asp:UpdatePanel>
4

2 に答える 2

1

このようにマークアップを変更する必要があると思います

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    ....

UpdateMode="Conditional"マークアップ自体に設定する必要があります

于 2013-02-04T06:31:18.237 に答える
0
protected void Button1_Click(object sender, EventArgs e) {
    discovery.FindAlreadyRegisteredServices();
    discovery.discoveryClient.FindCompleted += FoundEvent;
  // Try to call the update method after calling the custom even but in the click event of the button. Ensure you update the Trigger accordingly in the update panel
 **UpdatePanel1.Update();**
}

protected void FoundEvent(object sender, FindCompletedEventArgs e) {
    Label1.Text = (discovery.endpoints.Count > 0) ? discovery.endpoints[0].Address.ToString() : "nothing";
       }

更新モードを条件付きにして、更新パネルに AsyncPostBackTrigger を追加してみてください

あなたは明示的に同じことをしていますが。

<Triggers>  
                <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />  
            </Triggers>  

他の問題があるかどうかを確認するために、更新パネルの updateMode プロパティを「常に」に設定できます。

于 2013-02-04T06:30:25.130 に答える