Хорошо, поскольку вы не упомянули, какой тип проверки вы хотите, я сделаю как на стороне клиента, так и на стороне сервера. Мой TreeView
назван tvTest
Сначала добавьте CustomValidator
на вашу страницу Asp.Net:
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="ClientValidate"
ErrorMessage="CustomValidator" Display="Dynamic" OnServerValidate="CustomValidator1_ServerValidate">*</asp:CustomValidator>
Примечание: не устанавливайте свойство ControlToValidate
.
Затем добавьте этот скрипт (также на свою страницу Asp.Net) для проверки на стороне клиента:
<script type="text/javascript">
function ClientValidate(source, arguments) {
var treeView = document.getElementById("<%= tvTest.ClientID %>");
var checkBoxes = treeView.getElementsByTagName("input");
var checkedCount = 0;
for (var i = 0; i < checkBoxes.length; i++) {
if (checkBoxes[i].checked) {
checkedCount++;
}
}
if (checkedCount > 0 && checkedCount < 4) {
arguments.IsValid = true;
} else {
arguments.IsValid = false;
}
}
</script>
И, наконец, добавьте это в свой код для проверки на стороне сервера:
protected void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args) {
if (tvTest.CheckedNodes.Count > 0 && tvTest.CheckedNodes.Count < 4) {
args.IsValid = true;
} else {
args.IsValid = false;
}
}
Конечно, вы захотите изменить пределы для минимального и максимального количества узлов, которые пользователь может проверить.