2012-12-13 150 views
4

我正在使用web2py爲MySQL後端構建動態Web UI,並且我一般都不熟悉web2py框架和Web開發。web2py內嵌可編輯網格

我正在尋找的是一個庫或插件,它具有爲web2py構建或兼容的以下功能。

1)內聯編輯從表格中檢索的記錄(一次多個記錄,而不是一次一個記錄),所有更改在提交後都會發送回數據庫。

2)這些記錄的某些字段值的下拉菜單;下拉列表的值取決於該記錄的另一個字段的值。

3)創建新記錄的能力。

-

下面是幾個解決方案,似乎接近我在找什麼。但所有現成的東西似乎都要付出代價,或者要求我的項目是開源的。 [DOT]包括允許兩個以上的鏈接。

http://datatables.net/index - 無在線編輯無插件的採購

http://wijmo.com/widgets/wijmo-complete/grid/ - 格只配備了wijmo

http://trirand.com/blog/jqgrid/jqgrid.html 的行貨版本 - 很有前途,但我怎麼將數據發送回服務器使用web2py?另外,我將如何創建某些領域的下拉菜單?

http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/cell-editing.html - 這似乎是我正在尋找,但我不想支付授權。

-

我的偏好是使用已經構建的東西。但是,許多人似乎認爲編寫我自己的用戶界面是最好的方式。

任何建議在一個良好的道路上前進?

回答

0

有幾個解決方案:https://groups.google.com/forum/#!topic/web2py/2AvvmszNrgA

步驟: 下載jeditable, 安裝在靜態/ JS文件夾。將代碼添加到模板:

<script src="{{=URL('static','js/jquery.jeditable.js')}}"></script> 

型號:

db.define_table('dogs', 
Field('dog_name','string')) 

控制器:

def populate(): 
    db.dogs.truncate() 
    db.fleas.truncate() 

    db.dogs.insert(dog_name='dagwood') 
    db.dogs.insert(dog_name='daisy') 

def dogs(): 
    db.dogs.dog_name.represent = lambda value, row: DIV(value if value else '-',_class='dog_name', _id=str(row.id)+'.dog_name') 
    g = SQLFORM.grid(db.dogs, searchable=False, csv=False, user_signature=False) 
    return dict(form = g) 

def upd_dog_name(): 
    id,column = request.post_vars.id.split('.') 
    value = request.post_vars.value 
    db(db.dogs.id == id).update(**{column:value}) 
    return value 

查看:

{{extend 'layout.html'}} 

<script> 
jQuery(document).ready(function(){ 
    jQuery('.dog_name').editable("{{=URL('dogs', 'upd_dog_name')}}",{     
     tooltip: "Click to edit, enter to save", 
indicator : 'updating', 
});}) 
</script> 


<div id='dogs'> 
    {{=form}} 
</div> 

另一種方式(用更少的編程)就是用這個web2py切片: http://www.web2pyslices.com/slice/show/1714/jqgrid-viewing-and-updating-data