jqGrid zèbre / lignes alt fond ne fonctionne pas en raison de l'interface utilisateur classe Theme

StackOverflow https://stackoverflow.com/questions/4369899

  •  09-10-2019
  •  | 
  •  

Question

Nous ne pouvons pas obtenir zébrures au travail dans jqGrid.

Nous utilisons altclass et Altrows - question est il semble que la classe ui-widget-content de l'interface utilisateur JQuery a une réglage background qui est prépondérant réglage de background de notre altclass. Toutes les idées?


Mise à jour : Les deux réponses ci-dessous fonctionnent. Oleg est la plus propre de la solution de loin.

Pour la solution de Oleg au travail, votre classe Altrows doit être défini après y compris la classe CSS JQuery UI à la fois comme des lignes alt JQuery UI et la classe personnalisée définir la propriété d'arrière-plan et le wins dernière classe définie .

Était-ce utile?

La solution

jqGrid utilisation classe jQuery UI « secondaire ui priorité » comme la valeur par défaut du paramètre altclass. La classe sont décrits dans la documentation jQuery UI comme

  

classe à appliquer à une priorité-2   bouton dans des situations où le bouton   hiérarchie est nécessaire. applique normale   texte de poids et une légère transparence   élément.

Il est la cause pas exactement la description de l'zébrures, mais il n'y a pas tant de classes standard qui peuvent être utilisés. Malheureusement, même les lignes ayant des regards « ui priorité secondaire » pas si différent de lignes impaires dans la plupart des thèmes. Donc, pour améliorer la visibilité d'une doivent définir la altclass de classe manuellement.

L'une des façons les plus indigènes de faire même des lignes vues différentes que les lignes impaires est l'utilisation de différentes couleurs d'arrière-plan. Le problème est que la classe ui-widget-content utiliser une image d'arrière-plan défini avec le style background CSS, de sorte que le paramètre le plus natif de background-color ne fonctionnera pas. Pour résoudre le problème-on faire une des choses 1) supprimer la classe ui-widget-content 2) l'utilisation background de style CSS au lieu de background-color 2) l'utilisation background-image:none avec le style background-color. La façon la plus simple de le faire est de définir votre AltRowClass personnalisé comme

.myAltRowClass { background: #DDDDDC; }

ou

.myAltRowClass { background-color: #DDDDDC; background-image: none; }

et puis utiliser des paramètres de altRows:true et altclass:'myAltRowClass' de jqGrid.

Une autre façon est de faire la même chose sans Paramètres de altRows et altclass:

loadComplete: function() {
    $("tr.jqgrow:odd").css("background", "#DDDDDC");
}

Dans le cas, vous présente quelques petits inconvénients en vol stationnaire ou en sélectionnant les lignes paires. Le code suivant fonctionne mieux, mais faire la même chose que altRows:true et altclass:'myAltRowClass' faire:

loadComplete: function() {
    $("tr.jqgrow:odd").addClass('myAltRowClass');
}

De la cause la couleur de fond et d'autres attributs de styles CSS que vous pouvez définir pour les lignes paires sont dépendent du thème que vous utilisez, donc si vous prévoyez d'utiliser ThemeRoller vous devrez choisir altclass pour chaque thème, que vous permettent de choisir.

MISE À JOUR : Juste vu que j'ai oublié d'inclure le lien vers le fichier de démonstration qui démontrent ce que je l'ai écrit en direct. La démo est .

Autres conseils

Par Oleg .. dans LoadComplete:

$.each(grid.getDataIDs(),
    function(index, key){
        if(index % 2 !== 0) {
            var t = $("#" + key, grid);
            t.removeClass('ui-widget-content');
        }
    }
);

Et puis dans la définition de la grille:

altRows:true,
altclass:'myAltRowClass',

`myAltRowClass':

.myAltRowClass { background: #F8F8F8 ; border:1px solid #DDDDDD;  }

voici ma solution:

altRows     : true,
altclass    : 'oddRow',

gridComplete: function() {
    $(".jqgrow:odd").hover(
        function() { $(this).removeClass("oddRow");}, 
        function(event) { $(this).addClass("oddRow");}
    );
}, 

il a travaillé pour moi et peut être utilisé avec un thème ui.

J'ajouté le CSS suivant dans un fichier supplémentaire au style de la ligne alternative et vol stationnaire de la ligne sans utiliser Javascript supplémentaire:

table.ui-jqgrid-btable tr:nth-child(odd) td{
    background-color: #E7F0FD;
}
table.ui-jqgrid-btable tr:hover:nth-child(odd) td{
    background: url("images/ui-bg_glass_75_dadada_1x400.png") repeat-x scroll 50% 50% rgb(6, 41, 97);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top