4.4 KiB
DataRow
用处:DataRow 是一个用于展示数据行的容器控件,常用于表格或列表中的一行数据展示。支持表头与数据行的分别渲染,可配置字段显示、列宽、隐藏字段等,适用于构建数据浏览界面(如数据表格)。
类型:容器控件,继承自 bricks.HBox
主要方法
-
render_header()
渲染表头部分(通常包含字段名),调用render(true)实现。 -
render_data()
渲染数据内容部分,调用render(false)实现。 -
render(header: Boolean)
根据header参数决定是否渲染为表头。若为true,则显示字段标签;否则显示实际数据值。 -
renew(record: Object)
更新当前行绑定的数据记录,并重新渲染数据部分。record为新的数据对象。 -
get_check_state(e: Event)
处理复选框状态变化事件,更新内部数据并派发check_changed事件。 -
build_toolbar(header: Boolean)
构建工具栏(如操作图标按钮),根据header判断是否在表头区域创建空白占位。 -
my_dispatch(event_name: String)
返回一个闭包函数,用于在工具栏按钮点击时派发对应事件。 -
_build_fields(header: Boolean, containerWidget: Widget)
内部方法,遍历fields配置并生成对应的视图控件(如文本、图标等),添加到指定容器中。
主要事件
-
check_changed
当复选框状态改变时触发,携带当前组件实例作为参数。可用于监听选中状态变更。 -
自定义工具栏事件(由
toolbar.tools.name定义)
如edit,delete等,通过IconBar绑定后会派发同名事件,可通过binds监听处理。
源码例子
{
"id": "data_row_001",
"widgettype": "DataRow",
"options": {
// 表格字段定义
"fields": [
{
"name": "id",
"label": "编号",
"uitype": "str",
"cwidth": 5
},
{
"name": "name",
"label": "姓名",
"uitype": "str",
"cwidth": 10
},
{
"name": "status",
"label": "状态",
"uitype": "label", // 使用标签控件显示
"cwidth": 8
}
],
// 是否启用选择框
"checkField": "selected",
// 浏览器字段配置(控制列宽和隐藏)
"browserfields": {
"exclouded": ["internal_id"], // 不显示的字段
"cwidths": {
"status": 12
}
},
// 工具栏配置
"toolbar": {
"tools": [
{
"name": "edit",
"icon": "pencil",
"tip": "编辑"
},
{
"name": "delete",
"icon": "trash",
"tip": "删除"
}
]
},
// 自定义样式
"css": "data-row-item",
"header_css": "header-row"
},
"subwidgets": [],
"binds": [
// 监听复选框变化
{
"actiontype": "event",
"wid": "data_row_001",
"event": "check_changed",
"target": "data_grid_controller",
"dispatch_event": "row_selected",
"params": {
"rowid": "{data_row_001.getValue().id}"
}
},
// 编辑按钮点击
{
"actiontype": "method",
"wid": "data_row_001",
"event": "edit", // 来自 IconBar 的事件
"target": "popup_manager",
"method": "openEditPopup",
"params": {
"recordId": "{data_row_001.getValue().id}"
}
},
// 删除按钮确认并执行
{
"actiontype": "event",
"wid": "data_row_001",
"event": "delete",
"target": "data_row_001",
"dispatch_event": "confirm_delete",
"conform": {
"title": "确认删除",
"message": "确定要删除该条记录吗?",
"confirmButtonText": "删除",
"cancelButtonText": "取消"
}
}
]
}
注释说明:
fields定义了要展示的字段及其 UI 类型(uitype),框架会自动查找对应的 ViewBuilder 创建子控件。checkField启用行选择功能,会在最前插入一个复选框。toolbar.tools定义操作图标,每个name将作为事件名被DataRow派发。binds中通过event类型将内部事件转发给外部控制器处理。conform提供弹出确认对话框的能力,在危险操作前使用。{}中的表达式是 bricks 支持的运行时数据绑定语法,动态获取组件值。