web2py内联可编辑网格

时间:2012-12-13 18:42:09

标签: python grid web2py

我正在使用web2py为MySQL后端构建动态Web UI,而且我是web2py框架和Web开发的新手。

我正在寻找的是具有以下功能的库或插件,这些功能是为web2py构建的或与之兼容。

1)从表中检索的记录的内联编辑(一次多个记录,而不是一次一个),所有更改在提交时都会发送回数据库。

2)这些记录的某些字段值的下拉菜单;下拉列表的值取决于该记录的另一个字段的值。

3)创建新记录的能力。

-

以下几个解决方案似乎接近我正在寻找的东西。但是现成的所有东西似乎都要花费或要求我的项目是开源的。包含[DOT]以允许两个以上的链接。

http://datatables.net/index - 没有购买插件就没有内联编辑

http://wijmo.com/widgets/wijmo-complete/grid/ - grid仅附带wijmo的许可版本

http://trirand.com/blog/jqgrid/jqgrid.html - 看起来很有希望,但如何使用web2py将数据发送回服务器?另外,我如何为某些字段创建下拉列表?

http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/cell-editing.html - 这似乎是我正在寻找的,但我不想为许可付费。

-

我的偏好是使用已经构建的东西。但是,很多人似乎认为编写自己的UI是最好的方法。

关于前进的好路径的任何建议?

2 个答案:

答案 0 :(得分:0)

您看过以下插件列表http://dev.s-cubism.com/web2py_plugins 他们完成了你想要的大部分工作。

答案 1 :(得分:0)

有几种解决方案:https://groups.google.com/forum/#!topic/web2py/2AvvmszNrgA

步骤: 下载jeditable, 在static / 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