2009-06-26 11 views
3

L'arborescence possède des cases à cocher de nœuds feuilles. Je dois valider l'arborescence si au moins l'un des nœuds est vérifié et pas plus d'un nombre de nœuds spécifique (disons 3 nœuds) qu'un utilisateur peut sélectionner. Note: L'arborescence est une arborescence asp.net (pas une arborescence ajax)Validation Treeview

Répondre

11

Très bien, puisque vous n'avez pas mentionné le type de validation que vous voulez, je ferai à la fois le côté client et le côté serveur. Mon TreeView est nommé tvTest
D'abord, ajouter un CustomValidator à vous la page Asp.Net:

<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="ClientValidate" 
    ErrorMessage="CustomValidator" Display="Dynamic" OnServerValidate="CustomValidator1_ServerValidate">*</asp:CustomValidator> 

Remarque: ne définissez pas la propriété ControlToValidate.
Ensuite, ajoutez ce script (également à votre page Asp.Net) pour la validation du côté client:

<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> 

Enfin, ajoutez à votre code-behind pour la validation du côté serveur:

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; 
    } 
} 

Bien sûr, vous voudrez changer les limites pour le nombre minimum et maximum de nœuds que l'utilisateur peut vérifier.

+0

+1 - bonne solution. – adrianos

+0

Nice un très utile ... Merci – shijuse