IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Régle de saisie sur Grid d'un datagrid [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Par défaut Régle de saisie sur Grid d'un datagrid
    Voila je souhaiterais savoir dans ce code pourquoi mes régles de saisies ne sont pas pris en compte ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <title>DataGrid Basic Editing</title>
        <style type="text/css">
            @import "dijit/themes/tundra/tundra.css";
            @import "dojox/grid/resources/Grid.css";
            @import "dojox/grid/resources/tundraGrid.css";
            @import "general.css";
        </style>
        <script type="text/javascript" src="dojo/dojo.js" djConfig="isDebug:true">
        </script>
        <!--<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dojo/dojo.xd.js"
        djConfig="parseOnLoad: true,isDebug:true">
        </script>-->
     
        <script type="text/javascript">
        dojo.require("dojo.parser");
        //dojo.require("dijit.form.Button");
        //dojo.require("dijit.Dialog");
        //dojo.require("dijit.form.TextBox");
        //dojo.require("dijit.form.ValidationTextBox");
        //dojo.require("dijit.form.Form");
     
        dojo.require("dojox.grid.DataGrid");
        dojo.require("dojox.grid.compat._data.dijitEditors");
        dojo.require("dojo.data.ItemFileWriteStore");
     
        // ==========================================================================
        // Tie some UI to the data model
        // ==========================================================================
        //model.observer(this);
         modelChange = function(){
          dojo.byId("rowCount").innerHTML = 'Row count: ' + dojox.grid.DataGrid.rowCount;
        }
     
        // ==========================================================================
        // Custom formatters
        // ==========================================================================
        formatCurrency = function(inDatum){
          return isNaN(inDatum) ? '...' : dojo.currency.format(inDatum, this.constraint);
        }
        formatPercent = function(inDatum){
          return isNaN(inDatum) ? '...' : dojo.currency.format(inDatum, this.constraint);
        }
     
        formatDate = function(inDatum){
          return dojo.date.locale.format(new Date(inDatum), "dd-MMM-yyyy");
        }
     
     
        </script>
     
        <script type="text/javascript">
            //http://dojocampus.org/explorer/#Dojox_Grid_Edit%20Dijit
            var jsonStore = new dojo.data.ItemFileWriteStore({ url: "json/formatvaltab.json" });
            var grid = null;
     
            dojo.addOnLoad(function(){
     
            // set the layout structure:
            var layout = [{
            rows: [
            { field: 'Date',name: 'Date',width: '100px',
              editable: true,
              type: dojox.grid.cells._Widget,
              cellStyles:"text-align: center;",
              constraint: {datePattern:'dd/MM/yy'},
              widgetClass:dijit.form.DateTextBox,
              widgetProps:{regExp:'^[01-31]/[01-12]/[1-9][1-9][1-9][1-9]$',
                          invalidMessage:'Votre saisie est incorrecte'}
            },
            { field: 'Produit',name: 'Produit',width: '150px'},
            { field: 'Quantite',name: 'Quantite',width: '80px'},
            { field: 'Prix',name: 'Prix',width: '80px',
              editable: true,
              cellStyles:"text-align: right;",
              formatter: formatCurrency,
              constraint: {currency: 'EUR'},
              required:true,
              widgetClass: dijit.form.CurrencyTextBox,
              widgetProps:{regExp:'^[0-9]{1,5},[0-9]{1,2}$',
                          invalidMessage:'Votre saisie est incorrecte'}
     
            },
            { field: 'TVA',name: 'TVA',width: '80px',
              editable: true,
              type: dojox.grid.cells._Widget,
              widgetClass:dijit.form.NumberTextBox,
              constraint: {min:0, max:999}, 
              widgetProps:{regExp:'^[0-9]{1,2},[0-9]{1,2}%$',
                           invalidMessage:'Votre saisie est incorrecte. Le Format de saisie doit être : 99,99',
                           required:true
                           }
            },
            { field: 'Total',name: 'Total',width: '140px',
              editable: true,
              cellStyles:"text-align: right;",
              formatter: formatCurrency,
              constraint: {currency: 'EUR'},
              invalidMessage:'Votre saisie est incorrecte',
              widgetClass: dijit.form.CurrencyTextBox
            }
            ]
     
            }];
     
     
            grid = new dojox.grid.DataGrid({
                query: { Date: '*' },
                store: jsonStore,
                structure: layout,
                rowsPerPage: 20
            }, 'gridNode');
            });
        </script>
    </head>
    <body class="tundra">
        <h1>Gasket Modification</h1>
        <div class="partsContainer">
            <div class="gridContainer">
                <div id="gridNode"></div>
            </div>
        </div>
        <div id="rowCount"></div>
    </body>
    Quelqu'un à une idée ?

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Aucune de tes contraintes n'est prise en compte ?

    ERE

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Par défaut
    Aucune n'est prise en compte je te le confirme.

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Tu peux envoyer un store de demo que je puisse tester ton code ?

    ERE

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Par défaut
    Voici le store. Il faut enlever l'extension .conf
    Fichiers attachés Fichiers attachés

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Par défaut
    J'ai trouvé il me manquait dojo.require("dojox.grid.cells.dijit").
    Cela fonctionne.

  7. #7
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Désolé mais je n'ai pas pu regarder avant...

    Et effectivement de mémoire c'est cette librairie qui définit les méthode de lecture de widgetClass et widgetProps. Ceci explique cela.

    Pour mon info, les widgets s'affichaient correctement ?

    ERE

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Par défaut
    Sans cette librairie cela ne fonctionne pas ( les widgets ne s'affichent pas ).
    Je rencontre tout de même un soucis lorsque je veux mettre à jour le grid, j'ai le message d'erreur suivant dans firebug : ItemFileWriteStore does not have support for changing the value of an item's identifier.

    Peux tu me dire d'ou cela peux provenir ?

  9. #9
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Citation Envoyé par benoxy Voir le message
    Sans cette librairie cela ne fonctionne pas ( les widgets ne s'affichent pas ).
    Ha ok, par ce que dans ton premier post tu ne l'indiquais pas
    Je rencontre tout de même un souci lorsque je veux mettre à jour le grid, j'ai le message d'erreur suivant dans firebug : ItemFileWriteStore does not have support for changing the value of an item's identifier.

    Peux tu me dire d'ou cela peux provenir ?
    Effectivement le store ItemFileWriteStore n'accepte pas qu'on modifie la valeur de l'attribut qui fait office de clé primaire (le identifierAttribute. Ce n'est pas une spécification de l'API, mais une limitation de ce store (certainement pour des raison d'intégrité,notamment si tu appelles ensuite la fonction revert)

    Tu peux contourner cette limitation sans casser l'intégrité en plusieurs étapes:

    1. stocker l'item que tu veux modifier (dans une variable js)
    2. supprimer l'item du store
    3. effectuer un save sur le store (pour que Dojo réinitialise les tableaux destinés aux modifications en cours - et utilisés en cas de revert)
    4. modifier la clé de ton item stocké en 1)
    5. ajouter ton item stocké en 1)


    Ouf !

    ERE

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle] Date(oracle) => Année saisie sur 4 jours, retournée sur 2
    Par romulus dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/03/2006, 03h14
  2. contrôle de saisie sur un espace
    Par oceane751 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/01/2006, 12h04
  3. Controle de saisie sur une liste déroulante
    Par antier dans le forum IHM
    Réponses: 3
    Dernier message: 07/12/2005, 05h42
  4. [VB.NET]Cliquer sur une ligne du datagrid
    Par Dnx dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/11/2005, 14h26
  5. [VB.NET] Clic sur ImageButton utilisé dans datagrid
    Par viva-emptiness dans le forum ASP.NET
    Réponses: 6
    Dernier message: 15/06/2005, 00h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo