1

ajax tabPanel の ActiveTabChanged のイベント ハンドラーが 2 回起動する理由がわかりません。

誰でも次のコードを新しいプロジェクトに貼り付けて (AjaxControlToolkit を参照して)、問題を再現できるはずです。

ユーザーがタブをクリックすると、テキスト ボックスの内容からわかるように、tabchanged が 2 回発生します。また、2 回ヒットするブレークポイントをデバッグして設定することでも確認できます。

マークアップ

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="Project1.WebForm1" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="ajax" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:ScriptManager runat="server" ID="ScriptManager1" 
                            EnablePartialRendering="true" 
                            SupportsPartialRendering="true" 
                            ScriptMode="Release"
                            LoadScriptsBeforeUI ="true">
      </asp:ScriptManager>
      <asp:UpdatePanel ID="up" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
             <ajax:TabContainer id="TabContainer" runat="server"  EnableViewState="true" AutoPostBack="true">
                    <ajax:TabPanel id="tab1" runat="server"  HeaderText="Tab1">
                        <ContentTemplate>
                            <asp:TextBox runat='server' ID="txtTab1" Text="" Width="600px"></asp:TextBox>
                        </ContentTemplate>
                    </ajax:TabPanel>
                     <ajax:TabPanel id="tab2" runat="server"  HeaderText="Tab2">
                        <ContentTemplate>
                            <asp:TextBox runat='server' ID="txtTab2" Text=""  Width="600px"></asp:TextBox>
                        </ContentTemplate>
                    </ajax:TabPanel>
              </ajax:TabContainer>

            </ContentTemplate>
      </asp:UpdatePanel>
    </div>
    </form>
</body>
</html>

コードビハインド

Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Private Sub TabContainer_ActiveTabChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabContainer.ActiveTabChanged

        Me.txtTab1.Text = Me.txtTab1.Text & "_changed"
        Me.txtTab2.Text = Me.txtTab2.Text & "_changed"
    End Sub
End Class
4

0 に答える 0