2017-10-18 29 views
0

Je voudrais colorier le texte d'une colonne de façon conditionnelle en sélectionnant le type d'édition. Si j'utilise un formateur personnalisé, la valeur est modifiée. Voici mes extraits de code qui ne fonctionnent pas,Comment colorer la colonne de manière conditionnelle avec select type d'édition et sans formater personnalisé

function generateEventHandlerGrid(eventsJson){ 
     var eventGrid = $("#eventGrid"); 
      eventGrid.jqGrid({ 
       datatype: 'local', 
       data: eventsJson.eventInfo, 
      jsonReader: {repeatitems: false}, 
    colNames: ['Event Category', 'Event Creation'], 
{name: 'eventCategory', index: 'eventCategory',align:"center"}, 
{name: 'enabled', index: 'enabled', width:"100px",align:"center",editable:true,edittype: 'select', 
       editoptions: {value: "1:Enable;0:Disable"}, formatter: function (cellvalue, options, rowObject){ 
        if (rowObject.enabled == 1){ 
         var cellHtml = "<span style='color:" + "red" + "' originalValue='" + rowObject.enabled + "'>" + "Enable" + "</span>"; 
         return cellHtml; 
        }else{ 
         var cellHtml = "<span style='color:" + "green" + "' originalValue='" + rowObject.enabled + "'>" + "Disable" + "</span>"; 
         return cellHtml; 
        } 
       }}], 
    viewrecords: true, 
    gridview: true, 
    rownumbers: true, 
    shrinkToFit: false, 
       height: strMinimumHeight, 
       editurl: "clientArray", 
       restoreAfterSelect: false, 
       loadonce: true, 
    } 

Comment définir la couleur du texte en fonction de la valeur sans formateur personnalisé?

+0

Il est très difficile de lire le code, vous avez publié. D'ailleurs, le code est buggé: 'colModel' est manquant après' colNames'. Veuillez inclure * dans chaque question * à propos de jqGrid les informations sur la ** version ** de jqGrid, que vous utilisez (peut utiliser), et la ** fork ** ([free jqGrid] (https://github.com/ free-jqgrid/jqGrid), commercial [Guriddo jqGrid JS] (http://guriddo.net/?page_id=103334) ou un ancien jqGrid dans la version <= 4.7) – Oleg

+0

J'ai posté un petit morceau de code. Il contient du gros code donc pas facile de coller tout. J'utilise getRowData pour récupérer des données. –

+0

Comment puis-je obtenir ma valeur d'origine à partir du formateur personnalisé? Je suis nouveau à jqgrid –

Répondre

1

Le but de formatter personnalisé est le format contenu de la cellule. Ce que vous essayez de faire dans votre code actuel est le réglage styleattribut sur l'élément DOM externe dans la cellule. La meilleure caractéristique pour cela est le rappel cellattr. Ainsi, vous pouvez toujours utiliser un formateur, par exemple, formater le contenu comme date et toujours définir un style ou une classe, qui modifie l'attribut de la cellule.

La liste exacte des paramètres du rappel cellattr dépend de la version et de la branche de jqGrid que vous utilisez. Vous pouvez essayer de remplacer formatter avec cellattr avec le code suivant

cellattr: function (rowid, cellValue, rowData, cm, item) { 
    return " style='color:" + (rowData.enabled == 1 ? "red" : "green") + "'"; 
} 
+0

Fonctionne bien. Merci. Une autre requête, que faire lorsque je veux colorier la ligne avec la même valeur? Ou changer le fond de la rangée entière? –

+0

@DarshanShah: Vous êtes les bienvenus! On peut utiliser la fonction de rappel 'rowattr' (comme option de grille et non à l'intérieur d'une colonne) pour changer les attributs (couleurs et ainsi de suite) de certaines lignes. Voir [l'ancienne réponse] (https://stackoverflow.com/a/10531680/315935) avec l'ancien [démo] correspondant (http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridChangeRowBackgroundBasedOnCheckboxes3.htm). De plus, je vous recommande de mettre à niveau [free jqGrid] (https://github.com/free-jqgrid/jqGrid) 4.15.1 - la branche de jqGrid, que je développe, si vous ne l'utilisez pas encore. – Oleg

+0

Oui, j'ai déjà trouvé le même lien et mis en œuvre et fonctionne bien. Merci. –