on_open

on_open(item, params)

使用范围: server

编程语言: python

父类: Item 类

描述说明

请参考 版本 7 中的 on_before_openon_after_open

当您需要重写在 clientserver 上执行 open 方法期间从数据集中获取记录的标准过程时,

请编写 on_openon_bforee_openon_after_open 事件处理程序。

参阅 on_open_events 以理解如何触发 on_open 事件。

on_open 事件处理程序有如下参数:

  • item - 实体项的引用

  • params - 字典,它包含使用 open 方法传递给服务端的参数:

    • __expanded - 对应服务端 open 方法的 expanded 参数, 或是客户端:doc:open </refs/client/item/m_open> 方法的 options 参数中的 ``expanded``属性。

    • __fields - 字段名称的列表

    • __filters - 实体项列表。每个实体项都是一个包含以下成员的列表:

      • 字段名称

      • 来自 过滤记录 中的过滤器常量

      • 过滤器的值

    • __funcs - 函数字典

    • __order - 实体项的列表。每个实体项都是一个包含以下成员的列表:

      • 字段名称

      • 逻辑值( ture 或 false ), 如果为 ture ,则顺序为降序

    • __offset - 对应于 open 方法的 offset 参数

    • __limit - 对应于 open 方法的 limit 参数

    • __client_request - 当请求来自客户端时,其值为 true

    params 还可以包括传递给 open 方法的用户定义参数。

以下是发票实体项的客户端 open 方法发送到服务端的参数示例:

{
    '__fields': [u'id', u'deleted', u'customer', u'firstname', u'date',
        u'subtotal', u'taxrate', u'tax', u'total',
        u'billing_address', u'billing_city', u'billing_country',
        u'billing_postal_code', u'billing_state'],
    '__filters': [[u'customer', 7, [6]]],
    '__expanded': True,
    '__limit': 11,
    '__offset': 0,
    '__order': [[u'date', True]]
}

{
    '__fields': [u'id'],
    '__funcs': {u'id': u'count'},
    '__filters': [],
    '__expanded': False,
    '__offset': 0,
    '__order': [],
    '__summary': True
}

服务端应用程序基于参数生成 SQL 查询并执行它们。

如果在执行过程中发生错误,服务端会向客户端返回结果记录和错误消息。

一个如何使用服务端事件的示例

另请参见

on_open_events

服务器端编程

数据集