Вам нужно будет использовать CustomValidator
и обрабатывать его ServerValidate
событие (и, необязательно, его ClientValidationFunction
для клиентской стороныПроверка).Вы можете сделать один на странице и проверить все строки, или вы можете иметь одну для каждой строки и использовать свойство ControlToValidate
, чтобы дать вам контекст для строки, которую вы проверяете.
Любой пример проверки на стороне клиента будет зависеть от вашего макета и любой JavaScript-инфраструктуры, которую вы используете.Это может выглядеть примерно так:
<table>
<tr>
<td><asp:TextBox runat="server" ID="TextBox11" /></td>
<td><asp:TextBox runat="server" ID="TextBox12" /></td>
</tr>
<tr>
<td><asp:TextBox runat="server" ID="TextBox21" /></td>
<td><asp:TextBox runat="server" ID="TextBox22" /></td>
</tr>
<tr>
<td><asp:TextBox runat="server" ID="TextBox31" /></td>
<td><asp:TextBox runat="server" ID="TextBox32" /></td>
</tr>
<tr>
<td><asp:TextBox runat="server" ID="TextBox41" /></td>
<td><asp:TextBox runat="server" ID="TextBox42" /></td>
</tr>
<tr>
<td><asp:TextBox runat="server" ID="TextBox51" /></td>
<td><asp:TextBox runat="server" ID="TextBox52" /></td>
</tr>
</table>
<asp:CustomValidator ID="TextBoxPairValidator" runat="server" ControlToValidate="TextBox11" ClientValidationFunction="TextBoxPairValidator_ClientValidate" />
<script type="text/javascript">
(function () {
window.TextBoxPairValidator_ClientValidate = function (sender, args) {
var other = document.getElementById(sender.id.slice(0, -1) + '2');
args.IsValid = (sender.value === '' && other.value === '')
|| (sender.value !== '' && other.value !== '');
};
}());
</script>
Этот пример, очевидно, предполагает довольно простую компоновку и довольно статическое именование (т. Е. Если ваши элементы управления находятся в контейнере именования, вы не сможете использовать трюк с идентификатором).перейти от одного текстового поля к другому).Надеюсь, этого достаточно, чтобы вы начали.