Как использовать jqGrid в работе с кадрами django - PullRequest
3 голосов
/ 18 апреля 2010

Кто-нибудь, кто пытался использовать JQGrid плагин Jquery с django?

Пожалуйста, поделитесь своими знаниями / примерами кода

Ответы [ 2 ]

5 голосов
/ 18 апреля 2010

django-jqgrid выглядит многообещающе.

3 голосов
/ 12 июля 2011

Я использую django-jqgrid в своем проекте, и я очень доволен результатами:

функция готовности 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 
    );
});

});

HTML-код:

<table id="list_doc"></table>
<div id="pager_doc"></div>

в urls.py

(r'^documents_recents_config/$', 'document_recents_config'),
(r'^documents_recents/', 'document_recents_handler'),

в 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

Мой класс 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')

Вы можете использовать любую модель в классе jqGrid, она автоматически настраивается!

Решение очень элегантное. Чтобы отобразить специальный формат (datetime, filesize и boolean), я использую собственный метод json_encode, который форматирует эти типы перед отправкой ответа ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...