jqgrid nombre entier non défini? pager pas de chargement
IM en utilisant jqgrids sur mvc4, j'ai besoin de pour obtenir d'une simple liste et l'afficher à l'aide d'Ajax.
Lorsque je charge la page, puis grille commence un appel Ajax, je n'ai que 2 colonnes sur la grille, user_id et le nom.
Lorsque le Json est chargé j'obtiens l'erreur suivante sur Google chrome:
Uncaught Maquettiste: Impossible de lire la propriété 'integer' undefined
et dans firefox, firebug:
TypeError: b.jgrid.formateur est pas défini
sur jquery.jqGrid.src.js:122
Et la grille affiche un "undefined" msg, aussi, le courant pageer de contrôle n'est pas de chargement, mais les données sont
<table id="GridUsuarios"></table>
<div id="PagerUsuarios"></div>
<script type="text/javascript">
$(document).ready(function() {
jQuery("#GridUsuarios").jqGrid({
url: '@Url.Action("UsuariosGridData","Usuarios")',
datatype: "json",
myType: 'GET',
contentType: "application/json; charset-utf-8",
colNames: ['Usuario', 'Nombre'],
colModel: [
{ name: 'user_id', index: 'user_id', width: 90},
{ name: 'nombre', index: 'nombre', width: 200}
],
pager: '#PagerUsuarios',
rowNum: 10,
rowList: [10, 20, 30],
viewrecords: true,
height: 'auto',
sortname: 'nombre',
sortorder: 'desc',
caption: "Usuarios",
jsonReader: {
root: "rows",
total: "total",
page: "page",
records: "records",
repeatitems: false,
id: "user_id"
},
});
});
</script>
et mon contrôleur:
public JsonResult UsuariosGridData(string sidx = "" , string sord = "", int page = 1, int rows = 10)
{
var resultado = db_hms.Users//.OrderByDescending(ur => ur.id_user)
.Join(db_hms.v_natural_person_short, ur => ur.id_employee, np => np.id_natural_person, (ur, np) => new { Users = ur, Natural_Person = np })//cambiar el idUser por idEmployee la relacion es alrevez XD
.Select(s => new { user_id = s.Users.id_user, nombre = s.Natural_Person.name_full })
.ToList();
int vpage = page;
int vrows = rows;
int counter = (int)Math.Ceiling((float)resultado.Count() / (float)vrows);
switch (sidx)
{
case "nombre":
{
if(sord == "desc")
{
resultado = resultado.OrderByDescending(s => s.nombre).Skip(vrows * vpage).Take(vrows).ToList();
}
else
{
resultado = resultado.OrderBy(s => s.nombre).Skip(vrows * vpage).Take(vrows).ToList(); ;
}
break;
}
case "user_id":
{
if(sord == "desc")
{
resultado = resultado.OrderByDescending(s => s.user_id).Skip(vrows * vpage).Take(vrows).ToList();
}
else
{
resultado = resultado.OrderByDescending(s => s.user_id).Skip(vrows * vpage).Take(vrows).ToList();
}
break;
}
}
var retornar = new
{
total = counter,
page = vpage,
records = vrows,
rows = resultado
};
return Json(retornar, JsonRequestBehavior.AllowGet);
}
et un petit json exemple:
{"total":101,"page":1,"records":303,
"rows":[{"user_id":"titito","nombre":"EL bonito, tito "},
{"user_id":"noro","nombre":"ElMoro, Noro "},
{"user_id":"maka","nombre":"Martinez, Macanencio "}]}
OriginalL'auteur EricGS | 2013-05-23
Vous devez vous connecter pour publier un commentaire.
- En un et obtenez le message d'erreur en règle générale, si l'on n'est pas inclus nécessaire de la langue de fichier
grid.locale-XX.js
(par exemplegrid.locale-en.js
) avantjquery.jqGrid.min.js
oujquery.jqGrid.src.js
. Voir l'exemple de l'utilisation de jqGrid dans la documentation.En outre, je vous recommande d'ajouter
gridview: true
etautoencode: true
option pour jqGrid, supprimer non-existantmyType: 'GET'
(il y amtype
option dont la valeur par défaut si"GET"
), de réduirejsonReader
àjsonReader: {repeatitems: false, id: "user_id"}
, supprimer tous lesindex
propriétés decolModel
(parce que vous utilisez les valeurs de la même valeur que la valeur dename
à la propriété) et ajouterkey: true
à la définition de la'user_id'
colonne.Parce que vous n'avez pas mis en œuvre côté serveur la pagination des données, je vous recommande d'ajouter en outre
loadonce: true
option. Il vous permet de retourner toutes les données à la fois à partirUsuariosGridData
et jqGrid mettra en œuvre côté client, le tri, la pagination ou en option de filtrage/recherche de données.et sur la mise en page @Scripts.Render("~/bundles/modernizr") @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/jqueryui") @Scripts.Render("~/bundles/jqgrid") @RenderSection("scripts", obligatoire: false)
wow, recherchez != paramètres régionaux XD tks beaucoup
Vous êtes les bienvenus! Vous n'avez pas besoin d'inclure
"~/Scripts/jquery.jqGrid.js"
si"~/Scripts/jquery.jqGrid.src.js"
ou"~/Scripts/jquery.jqGrid.min.js"
est inclus. Donc il faut juste inclure"~/Scripts/i18n/grid.locate-es.js"
et puis, par exemple"~/Scripts/jquery.jqGrid.src.js"
.Merci une tonne! Sorti de l'enfer!
OriginalL'auteur Oleg
Ajouter une référence à la jqgrid locale fichier en premier, suivi par jqrid
OriginalL'auteur Denys Wessels