0

検証が必要な ajaxToolkit:TabContainer にネストされた一連のユーザー コントロールがあります。ユーザー コントロールには txtFlightFrom と txtFlightTo コントロールがあり、txtFlightFrom にデータがある場合は、それが txtFlightTo のデータであることを確認する必要があります (目的地の空港がなければ 1 つの空港から飛び出すことはできません)。asp:CompareValidator コントロールを初めて試していますが、本当の問題は、次のタブに進むときにバリデーターをトリガーする方法です。aspx ページから実行してみましたが、問題が発生するだけで、論理的に意味がありません。

ascx:

<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="txtFlightFrom" ControlToCompare="txtFlightTo" Type="String" ErrorMessage="CompareValidator" />
<asp:Label ID="lblCompareTOFROM" runat="server" />

<asp:TextBox ID="txtFlightFrom" runat="server" />
<asp:TextBox ID="txtFlightTo" runat="server" />

aspx:

<ajaxToolkit:TabContainer ID="TabContainer1" runat="server" AutoPostBack="true" OnActiveTabChanged="TabContainer1_ActiveTabChanged">
    <ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="Flights">
        <ContentTemplate>
            <ucFlight:FlightControl id="FlightControl1" Runat="server" />
            <ucFlight:FlightControl id="FlightControl2" Runat="server" />
        </ContentTemplate>
    </ajaxToolkit:TabPanel>

<ajaxToolkit:TabPanel ID="TabPanel2" runat="server" HeaderText="Cars">
    stuff
</ajaxToolkit:TabPanel>

ascx.cs

public string ValidateToFrom
{
    get { return lblCompareTOFROM.Text; }
    set { lblCompareTOFROM.Text = value; }        
}

aspx.cs

if (Page.IsValid)
{
    FlightControl1.ValidateToFrom = "Not Valid";
}

ascx.csでこのコードのバリエーションも試しましたが、イベントがaspx.csで発生しているため、それも意味がありません

何かご意見は?

4

1 に答える 1

0

私が数か月前に使用したトリックは、ユーザーがアクティブなタブを変更したときにjavascript関数を呼び出すクライアント側で検証関数を起動することでした。ネットですばやく検索すると、このが表示されます(現時点ではテストを実行できません。申し訳ありません)。

<ajaxToolkit:TabContainer runat="server" ID="Tabs" OnClientActiveTabChanged="ActiveTabChanged">


//Javascript function  
function ActiveTabChanged(sender, e) {  
    if (Page_ClientValidate() == false) {  
        var ctrl = $find("Tabs");  
        var tabpanel = ctrl.get_tabs()[0];  
        handleTabChange = false;  
        ctrl.set_activeTab(tabpanel);  
    }  
}   
于 2010-11-19T14:50:10.217 に答える