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 :

Lien et image dans un Datagrid


Sujet :

Bibliothèques & Frameworks

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Lien et image dans un Datagrid
    Bonjour,

    voila j'utilise les fonctions data.ItemFileReadStore pour générer un tableau a partir d'une variable que j'aurai rempli precedement avec un resultat de requete SQL.

    J'aurai aimé inserer dans la derniére cellule du tableau des bouton ou image cliquable pour effectuer des opérations sur les cellules concernées.

    Mais apparement tout ce qui est code html n'est pris en compte dans le tableau.

    quelqu'un sait il comment s'y prendre ?

    Voici le code utilisé.

    Merci d'avance.

    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
    <script>
            dojo.require("dojo.data.ItemFileReadStore");
            dojo.require("dijit.form.ComboBox");
    		dojo.require("dojox.grid.DataGrid");
     
    		var layoutCountries = [
                [{
                field: "abbr",
                name: "Abbeviation",
                width: 10
            },
            {
                field: "name",
                name: "Name",
                width: 10
            },
            {
                field: "capital",
                name: "Capital",
                width: 'auto'
            }]];
     
            var storeData = {
                identifier: 'abbr',
                label: 'name',
                items: [{
                    abbr: 'ec',
                    name: 'Ecuador',
                    capital: '<a href=\'test\'>test</a>'
                },
                {
                    abbr: 'eg',
                    name: 'Egypt',
                    capital: 'Cairo'
                },
                {
                    abbr: 'sv',
                    name: 'El Salvador',
                    capital: 'San Salvador'
                },
                {
                    abbr: 'gq',
                    name: 'Equatorial Guinea',
                    capital: 'Malabo'
                },
                {
                    abbr: 'er',
                    name: 'Eritrea',
                    capital: 'Asmara'
                },
                {
                    abbr: 'ee',
                    name: 'Estonia',
                    capital: 'Tallinn'
                },
                {
                    abbr: 'et',
                    name: 'Ethiopia',
                    capital: 'Addis Ababa'
                }]
            }
     
        </script>
     
    <div style="width: 400px; height: 300px;">
                <div dojoType="dojo.data.ItemFileReadStore" jsId="countryStoreForGrid" data="storeData">
                </div>
                <div id="grid" dojoType="dojox.grid.DataGrid" store="countryStoreForGrid"
                structure="layoutCountries" queryOptions="{deep:true}" query="{}" rowsPerPage="40">
                </div>
            </div>

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Alors il y a :
    - soit "escapeHTMLInData" à passer à "true" dans les parametres du tableau. Mais ce n'est pas tres securise etant donne que c'est sur l'ensemble des cellules.

    - soit un "formatter" à la création du tableau permettant de cibler une cellule (dans le layout) et d'y integrer du format HTML sans passer par le "escapeHTMLInData".

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse rapide.

    Bon alors je vais m'orienter vers autre chose, j'aimerai rajouter un evenement sur un double clic et en gros recuperer la valeur d'un des champs.

    J'ai modifié le GRID en mettant ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <div id="grid" dojoType="dojox.grid.DataGrid" store="countryStoreForGrid"
                structure="layoutCountries" queryOptions="{deep:true}" query="{}" rowsPerPage="40">
                <script type="dojo/connect" event="onRowDblClick" args="inRow">
    				// depending on store values
    				//var item = grid.store.getValue(grid.getItem(1), "Abbeviation");
    				alert("ok");
       			</script>
                </div>
    Mais je n'ai rien en retour. la ligne var item = grid.store.getValue(grid.getItem(1), "Abbeviation") provoque une erreur apparement.

    Question donc, comment récuperer la valeur d'une des cellules (par exemple un ID unique) dans un data grid ?

    Merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    La fonction que j'utilise (sans doute améliorable) est :

    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
     
    var tableau = dijit.byId('monTableau');
    var items = tableau.selection.getSelected();
    var cellule = "";
    if (items.length) {
    	dojo.forEach(items, function(selectedItem) {
    		if (selectedItem !== null) {
    			dojo.forEach(tableau.store.getAttributes(selectedItem), function(attribute) {
    				var value = tableau.store.getValues(selectedItem, attribute);
                                    //on recupere la valeur de ou des cellules que l'on veut
    				if(attribute == 'maCellule'){
    					cellule = value;
    				}
    			}); // end forEach
                             //ici on execute ce que l'on souhaite faire avec les valeurs que l'on a recupere sur la ligne.
    		} // end if
    	}); // end forEach
    } // end if

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,
    La fonction que j'utilise (sans doute améliorable)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dojo.forEach(tableau.store.getAttributes(selectedItem), function(attribute) {
         //on recupere la valeur de ou des cellules que l'on veut
         if(attribute == 'maCellule'){
            var value = tableau.store.getValues(selectedItem, attribute);
            cellule = value;
         }
    }); // end forEach

    ERE

    EDIT:
    ----
    et au passage, je viens de m'apercevoir qu'on connait l'attribut ; on n'a pas trop de raison de passer en revue la collection complète mais plutôt de récupérer la valeur directement.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup,

    ca marche nikel.

    Me reste plus qu'a chercher maintenant comment mettre de l'Ajax dans Dojo.

    Merci.

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Re,

    Par rapport à ton code précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div id="grid" dojoType="dojox.grid.DataGrid" store="countryStoreForGrid"
                structure="layoutCountries" queryOptions="{deep:true}" query="{}" rowsPerPage="40">
                <script type="dojo/connect" event="onRowDblClick" args="inRow">
    				// depending on store values
    				//var item = grid.store.getValue(grid.getItem(1), "Abbeviation");
    				alert("ok");
       			</script>
                </div>
    l'erreur vient du type retourné par onRowDblClick qui n'est pas le numéro de la ligne mais un événement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div id="grid" dojoType="dojox.grid.DataGrid" store="countryStoreForGrid"
                structure="layoutCountries" queryOptions="{deep:true}" query="{}" rowsPerPage="40">
                <script type="dojo/connect" event="onRowDblClick" args="e">
    	// depending on store values
    	var item = grid.store.getValue(grid.getItem(e.rowIndex), "Abbeviation");
    ...
       			</script>
                </div>
    ...
    ERE

Discussions similaires

  1. plusieurs boutons images dans un DataGrid
    Par salsero1 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/01/2008, 05h21
  2. [WebForms][1.1] Comment mettre une colonne image dans un datagrid?
    Par totoche9 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 02/07/2006, 13h49
  3. [WebForms]Afficher telle ou telle image dans un datagrid
    Par Emdis dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 30/05/2005, 18h02
  4. [C#] Afficher des images dans un datagrid
    Par mbibim63 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/05/2005, 12h22

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