Проверка на usercontrol в элементе управления вкладки ajax - PullRequest
0 голосов
/ 19 ноября 2010

У меня есть серия пользовательских контролов, вложенных в ajaxToolkit: TabContainer, которые необходимо проверить. Пользовательский элемент управления имеет элементы управления txtFlightFrom и txtFlightTo, и мне нужно убедиться, что это данные в txtFlightTo, если в txtFlightFrom есть данные (вы не можете вылететь из одного аэропорта без аэропорта назначения). Я пробую элемент управления 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

Есть мысли?

1 Ответ

0 голосов
/ 19 ноября 2010

Уловка, которую я использовал несколько месяцев назад, состояла в том, чтобы запустить функцию проверки на стороне клиента, вызывая функцию 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);  
    }  
}   
...