跳转到主要内容

Grok插件,用于创建表格表单

项目描述

借助此包,您可以在表单内创建表格。例如,考虑一个文件夹列表,其中第一列有一个复选框,您可以勾选要修改的行。这样的修改包括

  • 编辑

  • 删除

  • 更改工作流状态

megrok.z3cform.tabular基于以下现有megrok包

  • megrok.layout

  • megrok.z3ctable

  • megrok.z3cform.base

  • megrok.z3cform.ui

示例

首先,我们需要设置一个包含一些对象的容器。

>>> from zope.app.testing.functional import getRootFolder
>>> root = getRootFolder()
>>> from zope.app.container import btree
>>> class Container(btree.BTreeContainer):
...     """Sample container."""
...     __name__ = u'container'
>>> container = Container()
>>> root['container'] = container
>>> class Content(object):
...     """Sample content."""
...     def __init__(self, title, number):
...         self.title = title
...         self.number = number
>>> container[u'first'] = Content('First', 1)
>>> container[u'second'] = Content('Second', 2)
>>> container[u'third'] = Content('Third', 3)
>>> len(container)
3

现在我们有一个包含三个对象的容器。现在我们可以为这个容器创建一个表格视图

>>> from megrok.z3cform.tabular import FormTable
>>> import grokcore.component as grok
>>> from megrok.z3cform.base import button, extends
>>> class FormTableView(FormTable):
...     grok.context(Container)
...     extends(FormTable)
...
...     @button.buttonAndHandler(u'ChangeWorkflowState')
...     def handleChangeWorkflowState(self, action):
...         print 'success'
...
...     def render(self):
...         return self.renderFormTable()
>>> grok.testing.grok_component('formtableview', FormTableView)
True
>>> from megrok.z3ctable import table, CheckBoxColumn, NameColumn
>>> class CheckBox(CheckBoxColumn):
...     grok.name('checkBox')
...     grok.context(Container)
...     table(FormTableView)
>>> grok.testing.grok_component('checkbox', CheckBox)
True
>>> class Name(NameColumn):
...     grok.name('name')
...     grok.context(Container)
...     table(FormTableView)
>>> grok.testing.grok_component('name', Name)
True

现在我们可以在容器上调用FormTableView。我们应该看到有三行两列的表格。有一个默认的取消按钮和我们的自定义更改工作流状态按钮。

>>> from zope.publisher.browser import TestRequest
>>> request = TestRequest()
>>> from zope.component import getMultiAdapter
>>> formtableview = getMultiAdapter((container, request), name="formtableview")
>>> formtableview
<FormTableView 'formtableview'>
>>> formtableview.update()
>>> print formtableview()
<form action="http://127.0.0.1" method="post"
      enctype="multipart/form-data" class="edit-form"
      name="formTable" id="formTable">
  <div class="viewspace">
    <div>
    <div class="tabluarTable">
      <table class="contents">
  <thead>
    <tr>
      <th>Name</th>
      <th>X</th>
    </tr>
  </thead>
  <tbody>
    <tr class="even">
      <td>first</td>
      <td><input type="checkbox" class="checkbox-widget" name="formTable-checkBox-1-selectedItems" value="first"  /></td>
    </tr>
    <tr class="odd">
      <td>second</td>
      <td><input type="checkbox" class="checkbox-widget" name="formTable-checkBox-1-selectedItems" value="second"  /></td>
    </tr>
    <tr class="even">
      <td>third</td>
      <td><input type="checkbox" class="checkbox-widget" name="formTable-checkBox-1-selectedItems" value="third"  /></td>
    </tr>
  </tbody>
</table>
    </div>
    <div class="tabluarForm">
    </div>
  </div>
  </div>
  <div>
    <div class="buttons">
<input id="formTable-buttons-cancel"
       name="formTable.buttons.cancel"
       class="submit-widget button-field" value="Cancel"
       type="submit" />
<input id="formTable-buttons-changeworkflowstate"
       name="formTable.buttons.changeworkflowstate"
       class="submit-widget button-field"
       value="ChangeWorkflowState" type="submit" />
    </div>
  </div>
</form>

此包与megrok.layout配合得很好。有一些额外的BaseClasses可用。请查看测试。

享受...

变更日志

0.2 (2009-10-26)

  • 更改项目的描述。

0.1 (2009-10-26)

  • 初始发布

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分发

megrok.z3cform.tabular-0.2.tar.gz (8.4 kB 查看哈希值)

上传时间: 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面