Quiconque a essayé d'utiliser JQGrid un plugin Jquery avec django?Comment utiliser jqGrid dans le cadre django
S'il vous plaît partager vos connaissances/exemples de code
Quiconque a essayé d'utiliser JQGrid un plugin Jquery avec django?Comment utiliser jqGrid dans le cadre django
S'il vous plaît partager vos connaissances/exemples de code
django-jqgrid semble assez prometteur.
J'utilise django-jqGrid dans mon projet et je suis très satisfait des résultats:
la fonction prêt jQuery:
$(document).ready(function() {
$.getJSON("/accounts/documents_recents_config", function(data){
// On ajoute le lien vers le document
data['onSelectRow'] = function(id){ window.open("/fichier/lecture/"+id,"_self"); };
data['gridComplete'] = function(id){ jQuery("#documents_recents_count").html(jQuery("#list_doc").jqGrid('getGridParam', 'records')); };
$("#list_doc")
.jqGrid(data)
.navGrid('#pager_doc',
{add: true, edit: false, del: false, view: false},
{}, // edit options
{}, // add options
{}, // del options
{ multipleSearch:true, closeOnEscape:false }, // search options
{ jqModal:false, closeOnEscape:true} // view options
);
});
});
Le code html:
<table id="list_doc"></table>
<div id="pager_doc"></div>
dans urls.py
(r'^documents_recents_config/$', 'document_recents_config'),
(r'^documents_recents/', 'document_recents_handler'),
dans views.py
@login_required
def document_recents_handler(request):
# handles pagination, sorting and searching
if request.user and (request.user.is_staff == False):
grid = DocumentRecentsGrid(request)
return HttpResponse(grid.get_json(request), mimetype="application/json")
else:
raise Http404
classe Mon jqGrid
class DocumentRecentsGrid(JqGrid):
fields = ("nom","themes", "description", "nom_du_fichier", "taille_du_fichier", "public", "cree_le")
queryset = None
url = "/accounts/documents_recents/"
caption = force_unicode('Mes documents personnels récents') # optional
colmodel_overrides = {
'description': { 'editable': False, 'width':240 },
'nom_du_fichier': { 'editable': False, 'width':120 },
'taille_du_fichier': { 'editable': False, 'width':90 },
'public': { 'editable': False, 'width':50 },
'cree_le': { 'editable': False, 'width':125 },
}
def __init__(self, request):
super(DocumentRecentsGrid, self).__init__()
self.queryset = Lecture.objects\
.filter(salarie__username__exact=request.user.username)\
.filter(consulte=False).order_by('-cree_le')
Vous pouvez utiliser un modèle dans la classe jqGrid, il est auto-configuré!
La solution est très élégante. Afin d'afficher le format spécial (datetime, filesize et boolean), j'utilise une méthode json_encode personnalisée qui formate ces types avant d'envoyer la réponse ajax.
Je ne sais pas si je dois demander ici, mais, le fichier jqgrid où se trouve la classe JqGrid doit être sur INSTALLED_APPS? J'essaye et j'obtiens une erreur d'index de liste – Cheluis
Personnellement j'ai complètement intégré le dossier de jqgrid dans mon paquet d'utilité de projet avec quelques ajustements et modifications. Et comme il n'y a pas de modèles, je n'ai pas besoin de l'ajouter dans mon INSTALLED_APPS. J'importe simplement 'util.jqgrid' et je l'utilise comme vous pouvez le voir dans cet exemple. –
bien .. je vais essayer encore une fois. je vous remercie beaucoup – Cheluis