Проверка дерева просмотра - PullRequest
3 голосов
/ 26 июня 2009

В древовидном представлении есть флажки конечных узлов. Мне нужно проверить древовидное представление если проверен хотя бы один из узлов и не более определенного (скажем, 3 узла) количества узлов, которое может выбрать пользователь. Примечание. Древовидное представление - это древовидное представление asp.net (не древовидное представление ajax)

1 Ответ

11 голосов
/ 26 июня 2009

Хорошо, поскольку вы не упомянули, какой тип проверки вы хотите, я сделаю как на стороне клиента, так и на стороне сервера. Мой 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;
  }
}

Конечно, вы захотите изменить пределы для минимального и максимального количества узлов, которые пользователь может проверить.

...