2011-07-25 2 views
2

Avant que la ligne modifiée ne soit enregistrée, une fonction personnalisée doit être appelée pour valider la possibilité de sauvegarde.comment implémenter la validation au niveau des lignes dans jqgrid

Si cette fonction personnalisée renvoie la valeur false, l'enregistrement de la ligne doit être annulé et la ligne doit rester en mode d'édition afin que l'erreur puisse être corrigée et enregistrée à nouveau. Comment valider la ligne dans les modes d'édition en ligne et de formulaire? Je n'ai trouvé aucune fonction de validation de niveau ligne. Shoult-je ajouter la fonction de validation personnalisée à la colonne pour valider ligne ou y at-il une meilleure solution?

Répondre

6

Si je vous comprends correct, vous devez utiliser la validation personnalisée editrules

editrules: { 
    custom:true, 
    custom_func: function(value,colname) { 
     // return [true,""] in case of successful validation 
     // [false,"Your error message"]; in case of validation error 
    } 
} 

Voir jqGrid documentation pour l'exemple de code. JqGrid a seulement validation de niveau de cellule, mais dépend de la façon dont vous utilisez l'édition en ligne (par exemple, une seule ligne est en mode édition une fois), vous pouvez obtenir les données de la ligne d'édition entière. Vous avez beaucoup d'options. Par exemple vous pouvez obtenir les données de ligne manuellement ou simplement définir des règles de validation pour toutes les colonnes qui ont un intérêt, à l'intérieur de la validation des premières colonnes que vous venez d'enregistrer value dans la propriété d'un objet externe et dans la dernière fonction de validation vous pouvez accéder à toutes les données enregistrées pour effectuer une vraie validation de ligne.

+0

La validation est utilisée pour envoyer des données d'en-tête non enregistrées au serveur qui doit être sauvegardé avant ou avec des sauvegardes détaillées. J'ai essayé 'editrules = {custom = true, custom_func = fonction (valeur, nomcol) { if (! SaveHeader()) return [false, '']; else return [true, '']; }} '. En cas d'erreur, SaveHeader imprime le message d'erreur et renvoie false. Cependant, jqGrid imprime toujours le message d'erreur même si custom_func renvoie [false, '']. Comment supprimer ce message d'erreur ou au moins imprimer la valeur de la colonne dans le message d'erreur? Ou est-il préférable/comment envoyer des données de formulaire avec des données de ligne pour modifier/ajouter une méthode dans le serveur? – Andrus

+1

@Andrus: La validation côté client est exactement pour afficher un message à l'utilisateur en cas de données erronées, donc je ne comprends pas pourquoi vous essayez d'utiliser '[false, '']'. Le 'SaveHeader' ne devrait ** ** afficher ** aucun message, mais vous renvoie et' custom_func' devrait renvoyer le message en tant que deuxième élément du tableau. – Oleg

+0

Merci. Deux problèmes: 1. jqGrid imprime la valeur de la colonne au début du message lui-même. Cette valeur n'est pas liée à l'erreur de validation de ligne, donc je cherche un moyen de la rejeter. 2. Le message d'erreur jqGrid apparaît dans la boîte de dialogue modale. SaveHeader() ajoute un message d'erreur modale dans l'écran, je cherche un moyen pour un tel message. – Andrus

Questions connexes