У меня есть сетка данных, привязанная к источнику данных обычным способом (упрощенно для краткости):
<asp:SqlDataSource ID="ds" runat="server" ConnectionString="xxx"
ProviderName="yyy" SelectCommand="SELECT "a from A where date > ?">
<SelectParameters>
<asp:ControlParameter ControlID="txtDateFrom" Name="fromDate" PropertyName="Value" Type="DateTime"/>
</SelectParameters>
...
У меня также есть собственный валидатор для txtDateFrom
<asp:CustomValidator ID="fromDateCorrectVal" runat="server" ControlToValidate="txtDateFrom" ErrorMessage="From date is not valid" OnServerValidate="fromDateCorrectVal_ServerValidate" Display="None"/>
Где код похож на это:
protected void fromDateCorrectVal_ServerValidate(object source, ServerValidateEventArgs args)
{
DateTime parsedDate;
if (!DateTime.TryParse(tryDate, out parsedDate))
{
args.IsValid = false;
fromDateCorrectVal.ErrorMessage = "Invalid from date";
}
}
Но, похоже, это не работает! Если я ввожу мусор в поле даты, я получаю ошибку ASP - синтаксический анализ недопустимых токенов даты.
Как я могу остановить SQL-запрос на запуск, если проверка не удалась? (Я подозреваю, что в какой-то момент мне нужно проверить страницу isValid, но мои попытки попробовать это в событии datasource_Selecting, похоже, не работают)
Заранее спасибо за любую помощь
Ryan