ページに 2 つのパネルがあります。最初のパネルが更新されると、最初のパネルのコードが実行されます。2 番目のパネルが更新される (テキストが変更される) と、最初のパネルのコードが実行されます。2 番目のパネルのボタンをクリックして正しいコードを実行することはできますが、2 番目のパネルが変更されたときに正しいトリガーが起動しないのはなぜですか?
開発マシン上の Windows Server 2008R2 と Windows 7 IIS の両方でこれを試しました。
TESTPANEL.ASPX
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="testpanel.aspx.vb" Inherits="tpanels.testpanel" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Button runat="server" ID="btn1" Text="BTN1" OnClick="btn1_click" />
<asp:Button runat="server" ID="BTN2" Text="BTN2" OnClick="btn2_Click" />
<asp:UpdatePanel runat="server" ID="pnl1" UpdateMode="Conditional" ChildrenAsTriggers="False">
<ContentTemplate>
<asp:TextBox runat="server" ID="txt1" value="start"></asp:TextBox>
<asp:TextBox runat="server" ID="txt2" value="start"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel runat="server" ID="pnl2" UpdateMode="Conditional" ChildrenAsTriggers="False">
<ContentTemplate>
<asp:TextBox runat="server" ID="txt3" value="start"></asp:TextBox>
<asp:TextBox runat="server" ID="txt4" value="start"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="BTN2" EventName="click" />
</Triggers>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
テストパネル.ASPX.VB
Public Class testpanel
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub BTN2_Click(sender As Object, e As EventArgs)
txt4.Text = txt3.Text
End Sub
Protected Sub btn1_Click(sender As Object, e As EventArgs)
txt2.Text = txt1.Text
End Sub
End Class