jqGrid la Coloration de la totalité d'une ligne dans la Grille basée sur une des cellules de la valeur
Je sais que ça a été demandé avant, mais je ne peux pas le faire fonctionner, et je suis à court de choses à essayer.
Je veux coloriser une ligne dans une Grille, si sa valeur n'est pas 1 - je utiliser une mise en forme personnalisée pour cela. Le formateur lui-même fonctionne, ce n'est pas le problème.
J'ai essayé plusieurs façons que j'ai trouvé jusqu'à présent sur le web - ajout d'une classe, directement à l'ajout de code CSS, en utilisant setRowData
, à l'aide de setCell
....
Voici mes exemples - n'a pas fonctionné pour moi (Linux, ff363) - un pointeur serait grandement apprécié.
27.05.2010_00:00:00-27.05.2010_00:00:00 mon id de ligne
<style>
.state_inactive {
background-color: red !important;
}
.state_active {
background-color: green !important;
}
</style>
function format_state (cellvalue, options, rowObject)
{
var elem='#'+options.gid;
if (cellvalue != 1) {
jQuery('#list2').setRowData(options.rowID,'',
{'background-color':'#FF6F6F'});
jQuery('#list2').setRowData('27.05.2010_00:00:00-27.05.2010_00:00:00',
'',{'background-color':'#FF6F6F'});
for (var cnt=0;cnt<rowObject.length;cnt=cnt+1) {
jQuery(elem).setCell(options.rowId,cnt,'','state_inactive','');
jQuery(elem).setCell('"'+options.rowId+'"',cnt,'','state_inactive');
jQuery(elem).setCell('"'+options.rowId+'"',cnt,'5',
{'background-color':'#FF6F6F'},'');
}
} else {
for (var cnt=0;cnt<rowObject.length;cnt=cnt+1) {
jQuery(elem).setCell(options.rowId,cnt,'','state_active','');
}
}
<!-- dont modify, we simply added the class above-->
return cellvalue;
}
OriginalL'auteur Thomas | 2010-05-28
Vous devez vous connecter pour publier un commentaire.
Il me semble que votre problème principal est que vous n'êtes pas la fixation d'un 'background-color' style. Vous devez supprimer 'ui-widget-content" class à partir de la ligne (de
<tr>
élément)avant d'ajouter la classe
state_activ
oustate_inactive
, parce que jQuery UI de la classe ui-widget-content " est de définir.ui-widget-content
commeet seulement avec réglage de CSS
'background-color'
votre pas vraiment changer la couleur d'arrière-plan. Donc, essayez d'utiliser quelque chose commeDans
loadComplete
lignes sont remplies et dans lagridComplete
pas. Chez moi cela fonctionne à l'intérieur deloadComplete
. Je vous recommande de toujours utilisergridview: true
wnd pas le temps d'utiliserafterInsertRow
événement, qui a rupture rapide le comportement de l'exécution degridview: true
paramètre. Vous pouvez appelerjQuery('#list2').getDataIDs();
l'intérieur ou à l'loadComplete
, test de la valeur de la cellule avecgetCell()
et puis les retirer et ajouter la classe.Il ne marche pas encore 🙁 Aparantly son b/c le sélecteur jquery peux pas trouver l'id de ligne - l'objet est null, bien que l'id est id ... =25.05.2010_00:00:00-26.05.2010_00:00:00 <tbody><tr id="25.05.2010_00:00:00-26.05.2010_00:00:00" role="row" class="ui-widget-content jqgrow ui-ligne-ltr"><td ...</tr> alertes de var l2=jQuery('#liste 2'); alert ("id="+ cl +" "+l2.html()); var trElement = jQuery('"#'+cl+'"',jQuery('#liste 2')); trElement.removeClass('ui-widget-content'); trElement.addClass('state_active'); trElement est null .html()...
Il peut être que vous avez un tel problème en raison de symboles spéciaux à l'intérieur de
id
. Vous utilisez ':', '-' et '.'. jqGrid eu des problèmes avec certains symboles à l'intérieur deid
. Pour vérifier cela, essayez d'utiliser plus facilement la forme de l'ids. De plus, certains personnages ont un espace de sens pour jQuery. De sorte que le des constructions comme lesjQuery("#"+ options.rowId)
peut être mal interpréter par jQuery. Si tous va être un travail avec la simple id, vous pouvez mettre en œuvre une certaine forme de codage/décodage des valeurs d'id.En général, il est de nouveau question. C'est mieux pour les autres utilisateurs si vous vous posez la question n'est pas dans les commentaires parce que ces réponses seront pas trouvé pendant la recherche. Pour votre problème: Vous pouvez utiliser
transparent
couleur pour la bordure. Par exemple.ui-jqgrid tr.ui-row-ltr td {border-right-color: transparent;}
supprime les bordures verticales entre les cellules. De la même manière.ui-jqgrid tr.ui-row-ltr td {border-bottom-color: transparent;}
va supprimer les frontières entre les lignes. une Autre réponse explique comment supprimer les frontières dans les en-têtes de colonne.OriginalL'auteur Oleg
pour tous ceux qui recherchent une véritable réponse à ce sujet..
cela fonctionne !
Dans un autre fichier de la feuille de style CSS personnalisé
n'oubliez pas les !important remplace le thème de l'interface utilisateur rouleau
Il fonctionne pour moi aussi, mais seulement si gridview n'est pas le vrai
J'ai fini par mettre la même logique pour gridComplete, mais le concept a très bien fonctionné.
Ta solution me semble être le plus pratique, mais comment puis-je mettre inline CSS?
OriginalL'auteur Sk.
J'ai essayé la solution pendant une longue période, et enfin de tous les exemples et suggestions de combiner un truc qui a fonctionné pour moi. Bien sûr, vous devez définir des styles css pour que cela fonctionne. Espérons que cela aide, même si elle pourrait produire un potentiel problème de vitesse.
...
...
OriginalL'auteur marbo
J'ai essayé les solutions ci-dessus, mais je pense que l'on est la bonne:
Si la classe css est entre apostrophes, il est remplacé par celui d'origine (vous pouvez le voir facilement à l'aide de firebug):
correct avec {color:'red'}:
Selon la documentation de setRowData:
OriginalL'auteur christof
Je suggère que vous essayez someing comme ça.
Ce sera effectivement vous donner accès à l'ensemble de la ligne.
OriginalL'auteur David
Très Simple et fonctionne
OriginalL'auteur Ricardo Vieira
Assumés autres valeur de la cellule est Y/N.
code ci-dessous va dans loadComplete événement
Déjà ajouté des commentaires. ne sais pas ce qui n'est pas clair pour vous. Ce code de couleurs cellules/lignes au moment du chargement pour toutes les lignes une fois que la grille de création. Si vous savez déjà ce code, il peut être utile à d'autres. Si vous pensez que c'est inutile de le supprimer.
Il est toujours préférable de décrire votre code aussi bon que vous le pouvez. Je ne pense pas que toute réponse qui répond à la question est inutile, mais il y a toujours quelques réponses plus utiles que d'autres - et vous décidez que la réponse est utile par upvoting il
oui, u est bonne, explication détaillée est toujours la meilleure. Parfois, son peu trop subjective. espérons que la mise à jour du code mieux maintenant. BTW, comment votre nom d'utilisateur changé à msrd07 de user3755692?
oui, les mises à jour de votre version est mieux. Vous pouvez changer votre nom d'utilisateur en accédant à votre profil, cliquez sur "modifier" et ensuite modifier votre nom d'affichage
OriginalL'auteur user3990701