2012-01-30 49 views
2

我期待有一個非常簡單的網格,我想用扭曲的web服務器返回所有的json jqGrid。我有很多jqGrid代碼的例子,但是想看看python/twisted中是否有後端的例子?沒有人有任何使用jqGrid與扭曲/ Python的任何示例

+0

我沒有工作的例子給個大氣壓,但我可以告訴你,你的echoeing數據'json_encode'將是該解鎖您的解決方案的第一個關鍵,因爲這將自動將您的數據數組轉換爲jqGrid甚至Flexigrid用於解釋數據對象的預期形式。 – SpYk3HH 2012-02-08 17:17:57

回答

1

首先在某處定義您的網格(例如,grids.py)。只需要模型或查詢集和url。

class ExampleGrid(JqGrid): 
    model = SomeFancyModel # could also be a queryset 
    fields = ['id', 'name', 'desc'] # optional 
    url = reverse('grid_handler') 
    caption = 'My First Grid' # optional 
    colmodel_overrides = { 
     'id': { 'editable': False, 'width':10 }, 
    } 

創建視圖來處理請求

def grid_handler(request): 
    # handles pagination, sorting and searching 
    grid = ExampleGrid() 
    return HttpResponse(grid.get_json(request), mimetype="application/json") 

def grid_config(request): 
    # build a config suitable to pass to jqgrid constructor 
    grid = ExampleGrid() 
    return HttpResponse(grid.get_config(), mimetype="application/json") 

定義網址,這些觀點

from myapp.views import grid_handler, grid_config 
... 
url(r'^examplegrid/$', grid_handler, name='grid_handler'), 
url(r'^examplegrid/cfg/$', grid_config, name='grid_config'), 

了直接從here它使用Django這個例子。您將需要構建基於數據返回json的函數。

也許是這樣的:

def get_rows(): 
    db.things.category.represent = lambda v: v.name 
    fields = ['id','name','category','price','owner'] 
    rows = [] 
    page = int(request.vars.page) 
    pagesize = int(request.vars.rows)  
    limitby = (page * pagesize - pagesize,page * pagesize) 
    orderby = db.things[request.vars.sidx] 
    if request.vars.sord == 'desc': orderby = ~orderby 
    for r in db(db.things.id>0).select(limitby=limitby,orderby=orderby): 
     vals = [] 
     for f in fields: 
      rep = db.things[f].represent 
      if rep: 
       vals.append(rep(r[f])) 
      else: 
       vals.append(r[f]) 
     rows.append(dict(id=r.id,cell=vals)) 
    total = db(db.things.id>0).count()  
    pages = int(total/pagesize) 
    #if total % pagesize == 0: pages -= 1 
    data = dict(total=pages,page=page,rows=rows) 
    return data 

這是從here

相關問題