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