2010-11-16 10 views
0

Lorsque la souris survole chaque colonne, je voudrais que l'info-bulle indique si cette colonne peut être triée.
Je suis en mesure de changer le titre attribut avec quelque chose comme ceci:jqGrid - comment changer le titre en fonction de la propriété de tri colModel

$("#List .ui-th-column").each(function(i) { 
    var isSortable = i % 2; 
    $(this).attr('title', isSortable ? "Not Sortable" : "Click header to sort."); 
}); 

J'aimerais remplacer l'expression de démonstration « i% 2 » avec un chèque de triables propriété du colMode , mais je n'arrive pas à comprendre comment obtenir la valeur de la propriété sortable de colModel.

colModel: [ { name: 'Name', index: 'Name', width: 100, sortable: true }, 
      { name: 'Note', index: 'Note', width: 200, sortable: false } ] 

J'ai essayé .getGridParam et .getColProp mais je ne pense pas que la syntaxe que je utilise est correcte.

Répondre

0

Pour obtenir la valeur de la propriété sortable comme toute autre propriété de la définition de la colonne que vous pouvez faire ce qui suit:

var grid=$("#list"); 
var propsName = grid.jqGrid('getColProp','Name'); 
var propsNote = grid.jqGrid('getColProp','Note'); 
alert("'Name' has sortable="+propsName.sortable+ 
     "\n'Note' has sortable="+propsNote.sortable); 

Pour définir l'info-bulle sur l'en-tête de colonne que vous pouvez faire à la suite

var setTooltipsOnColumnHeader = function (grid, iColumn, text) { 
    var thd = $("thead:first", grid.hdiv)[0]; 
    $("tr th:eq(" + iColumn + ")", thd).attr("title", text); 
}; 
var grid=$("#list"); 
setTooltipsOnColumnHeader(grid,2,"Bla Bla!"); 

Ici, nous identifions la colonne par l'indice des colonnes visibles.

Vous pouvez facilement réécrire les exemples de code pour votre usage.

+0

@Greg: Désolé, que voulez-vous dire? – Oleg

+0

le var propsName = grid.jqGrid ('getColProp', 'Name'); me donne le booléen dont j'ai besoin pour isSortable - merci. Existe-t-il un moyen pour moi d'utiliser la variable i dans le .each (fonction (i) pour remplacer le nom de la colonne afin que je ne doive pas taper 'Name', 'Description' etc – Greg

+0

@Greg: the var propsName = grid.jqGrid ('getColProp', 'Name'); donne ** un objet ** ayant une propriété booléenne 'sortable' s'il est défini dans' colModel''. Regardez l'exemple http: //www.ok-soft -gmbh.com/jqGrid/isSortable.htm De cause vous pouvez faire une boucle à travers toutes les colonnes, mais l'utilisation de '$ (" # List .ui-th-column ")' me semble mal parce que les colonnes ne font pas partie de '$ (" # List ")' .jqGrid certains parents divs sur l'élément de la table principale.Voir http: // stackoverflow.com/questions/3462071/jqgrid-get-th-et-thead-using-jquery/3463002 # 3463002 pour plus d'informations. – Oleg

0

Cela fonctionne bien. merci pour toute l'aide Oleg.

$("#gbox_List .ui-th-column").each(function(i) { 
    var col = grid.getGridParam('colModel'); 
    var isSortable = grid.jqGrid("getColProp", col[i].name).sortable; 
    $(this).attr('title', isSortable ? "Click header to sort by column." : "Not Sortable"); 
}); 

Vous aviez raison sur les $ (# Liste ne pas être au bon endroit sur le DOM, il aurait dû être #gbox_List -. Les informations supplémentaires qui ont fait clairement

j'avais à utiliser .ui-TH- colonne plutôt que .ui-TH- étiquettes pour la .each à boucle à travers chaque colonne.

I a pu éviter coder en dur le nom de colonne à l'aide de grid.getGridParam ('colModel') pour renvoyer un tableau, puis en saisissant la propriété .name pour chaque colonne.

Cette solution est sympa car j'ai ~ 20 grilles, chacune avec beaucoup de colonnes non supportables et avoir une ligne différente pour chaque colonne non supportable aurait été désordonné. Maintenant, je peux profiter du paramètre de propriété triable dans le colModel.