jqgrid: Comment faire pour obtenir l'index de colonne d'utilisation de mise en forme personnalisée
Comment faire pour obtenir l'index de colonne d'utilisation de mise en forme personnalisée.
Dans la colonne «Impôt» j'essaie d'utiliser la mise en forme personnalisée. Besoin d'obtenir la valeur d'index de colonne et de ligne valeur de l'indice. Je peux obtenir jerame paramètre jerame = options.rowid mais le problème avec l'obtention de icol paramètre.
C'est mon exemple:
var $grid = $("#grid");
$grid.jqGrid({
datatype: "local",
height: 250,
colNames:[' ', 'Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
colModel:[
{name: 'myac', width:80, fixed:true, frozen: true, sortable:false, resize:false, formatter:'actions',
formatoptions:{keys:true}},
{name:'id',index:'id', width:60, sorttype:"int", frozen: true},
{name:'invdate',index:'invdate', width:90, sorttype:"date", frozen: true, editable: true},
{name:'name',index:'name', width:100, editable: true, editable: true},
{name:'amount',index:'amount', width:80, align:"right",sorttype:"float", editable: true},
{name:'tax',index:'tax', width:80, align:"right",sorttype:"float", editable: true,
formatter: function(cellvalue, options) {
var id = options.rowId;
var col;
return id ?
'<span class="editable" data-id="' + id + '" data-col="' + col + '">$' + cellvalue + '</span>' :
cellvalue;
}
},
{name:'total',index:'total', width:80,align:"right",sorttype:"float", editable: true},
{name:'note',index:'note', width:150, sortable:false, editable: true}
],
rowNum:10,
width:700,
rowList:[10,20,30],
pager: '#pager',
sortname: 'invdate',
viewrecords: true,
sortorder: "date",
shrinkToFit: false,
rownumbers: true,
caption: "Frozen Column with Group header and custom cell formatter",
height: 'auto',
frozen : true
});
var mydata = [
{id:"1",invdate:"2007-10-01",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
{id:"2",invdate:"2007-10-02",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
{id:"3",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"},
{id:"4",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
{id:"5",invdate:"2007-10-05",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
{id:"6",invdate:"2007-09-06",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"},
{id:"7",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
{id:"8",invdate:"2007-10-03",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
{id:"9",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}
];
for(var i=0;i<=mydata.length;i++) $grid.jqGrid('addRowData',i+1,mydata[i]);
$grid.jqGrid('setGroupHeaders', {
useColSpanStyle: true,
groupHeaders:[
{startColumnName: 'amount', numberOfColumns: 3, titleText: '<em>Price</em>'},
]
});
$grid.jqGrid('setFrozenColumns');
Utilisation cliquez sur la cellule de l'événement, je peux obtenir le col et l'index de ligne.
$grid.click(function(e) {
var el = e.target;
if (el.nodeName !== "TD") {
el = $(el,this.rows).closest("td");
}
var iCol = parseInt($(el).index());
var row = $(el,this.rows).closest("tr.jqgrow");
var rowId = parseInt(row[0].id);
alert ("rowId="+rowId+"; iCol="+iCol+";");
- Je ne pense pas qu'il y est un faciity pour que, dans le module de formatage, mais la colonne de l'index est l'index dans le colModel tableau. Si l'index de colonne de myac est 0, et l'index de colonne de la taxe est de 5.
- en raison de l'utilisation de la
rownumbers: true
optioncolModel
sera modifié par jqGrid et la colonne"rn"
sera inséré à la première colonne. Si l'index de colonne de la"tax"
colonne (l'index de la colonne danscolModel
) sera de 6. - est-il possible d'obtenir icol valeur?
Vous devez vous connecter pour publier un commentaire.
Tout d'abord merci de ne jamais utiliser
addRowData
pour faire du remplissage initial de jqGrid avoirdatatype: "local"
. Au lieu de cela, vous pouvez déplacer la ligne avecvar mydata = [...];
au début de votre code et ajouterdata: mydata
à la liste des paramètres de jqGrid.Maintenant au sujet de votre question principale:
options
paramètre de la mise en forme personnalisée 4 propriétés:grid
bien - tenir la chaîne de représenter l'id de la grille. C'est"grid"
dans votre cas.pos
de la propriété - c'est l'indice de la colonne danscolModel
. Il sera 6 dans votre cas. Doncoptions.pos
est la réponse à votre question.rowId
de la propriété - c'est le rowid de la ligne qui va maintenant être construitcolModel
de la propriété - c'est l'objet qui représente l'élément imcolModel
avec l'indexoptions.pos
.En outre jqGrid initialiser
this
à l'élément du DOM de la grille exactement comme dans le cas de l'appel de rappels. Donc$(this).jqGrid("getGridParam")
, par exemple, outhis.p
vous obtiendrez les options de jqGrid.iCol
utilisationcellattr: function( rowId, val, rowObject, cm, rdata) { var iCol;}
iCol
. Il est plus sûr d'utiliser le nom de colonne (la valeur de laname
propriété de la colonne correspondante dans lacolModel
. Le problème est que l'index de colonne peut être changé, par exemple par l'utilisation de columnChooser ou, dans le cas de l'utilisation de lasortable: true
option de jqGrid (il permet à l'utilisateur de changer la colonne de commandes par drag&drop des en-têtes de colonne). En général, vous pouvez utilisercm.name
pour obtenir le nom de la colonne et vous pouvez trouveriCol
index dansthis.p.colModel
tableau.Il y a une fonction de rappel de jqgrid : onselectcell. Dans que vous pouvez obtenir le col de l'indice de