SMART datagrid格提供用户在运行时间内可以直接添加或删除行或使用单元格编辑器而修改值的多种方法。 而且,通过在发生编辑的各个地点触发事件,使开发人员可以提现符合需求的UI。
用户可以在网格根据应用而体现多种编辑,并且可以变得相当复杂。
如果将焦点移动至将要编辑的数据单元格,并且输入F2键或双击鼠标,就会显示设置在列中的编辑器。 而且,如果在具有焦点的数据单元格开始键输入,就会显示编辑器,并且开始输入。
我们也可以通过调用GridBase.showEditor而显示编辑器。 在显示编辑器之前,将会触发GridBase.onShowEditor事件。
如果在显示编辑器的情况下,输入Esc键,就会取消单元格编辑,同时将会关闭编辑器,并且忽视编辑器中所输入的值。 在关闭编辑器之后,将会触发GridBase.onEditCanceled事件。 我们也可以通过调用GridBase.cancelEditor而取消单元格编辑。 而且,如果想要取消行编辑,就可以在没有显示编辑器的情况下,重新按Esc键。
为提交单元格编辑,可以输入Enter键或使用键盘或鼠标而将焦点移动至其他单元格。 这时,如果移动至其他行的单元格,就会提交单元格编辑的同时,将会提交行编辑。 我们也可以通过直接调用GridBase.commitEditor而提交编辑。
在提交单元格编辑之前,将会运行验证, 而当完成验证时,将会反映所输入的值,并且将会先后触发GridBase.onEditCommitted和GridBase.onEditCellUpdated事件。 这时,编辑器可以替代用户输入值而传递其他值,而需要在DataColumn.editCallback函数中,将editResult.value设置为其他值。
为取消单元格编辑,需要输入Esc键或调用cancelEditor方法。
如果没有将EditOptions.updateByCell指定为true,SMART datagrid格基本会进行行编辑。 也就是说,将会提交或取消所有行编辑。 只有提交行编辑,才会传递输入到数据组的值。
为提交编辑,需要使用方向键或点击鼠标而变更行位置。 或者,也可以直接调用GridBase.commit方法。 为取消编辑,需要在没有显示编辑器的情况下,输入Esc键。 也就是说,如果是显示编辑器的状态,就需要连续两次按Esc键。 或者,也可以调用cancel方法。
当用户使用单元格编辑器而修改单元格时,可能会按下列表格中所列出的顺序,触发网格事件。
事件 | 说明 |
---|---|
onShowEditor(grid, index) | 当显示编辑器之前,将会触发这个事件。如果在这个事件处理器中明确返回false,就不会显示编辑器。 |
onEditChanged | 每次修改编辑器内容时,将会触发这个事件。 |
onEditCanceled | 当取消单元格编辑时,将会触发这个事件。 |
editCallback | 在这个回调函数中,可以替代用户编辑的值而用其他值而提交编辑。 |
onEditCommitted | 当正常提交单元格编辑时,将会触发这个事件。 |
onEditCellUpdated | 当提交编辑时点,如果所输入的值与现有值不同,就会触发这个事件。 |
onEditRowPasted | 当编辑中的行发生剪贴板粘贴时,将会触发这个事件。 |
onEditSearch | 这是请求SearchCellEditor将显示在列表的项目的事件。 |
onEditRowCommitted | 当提交行编辑后,将会触发这个事件。 |
onEditRowCanceled | 当取消行编辑后,将会触发这个事件。 |
onPasted | 当提交剪贴板粘贴后,将会触发这个事件。 |
目前,SMART datagrid格提供下列表格中所列出的单元格编辑器。 通过DataColumn.editor属性,设置编辑器类型和属性。
类型 | 说明 | 主要属性 |
---|---|---|
'line' LineCellEditor | 单行文本编辑器。默认编辑器 | maxLength - 输入最大长度 |
'list' ListCellEditor | 用列表框显示可设置的列表的文本编辑器 | |
'multiline' MultiLineCellEditor | 多行文本编辑器 | maxLength - 输入最大长度 |
'number' NumberCellEditor | 数字编辑器 | positiveOnly - 只输入正数值 maxDigits - 小数字数 |
'date' DateCellEditor | 显示日历列表的日期编辑器 | yearNavigation - 显示年度变更按钮 showToday - 显示今日移动按钮 |
'search' SearchCellEditor | 根据条件而变更列表目录的列表编辑器 | keyLength - 请求列表的最小文本长度 searchDelay - 输入后触发请求事件之前的等待时间 |
如果目前进行行编辑,就不会进行排序、筛选、行分组、分页。
如果目前进行行编辑,就会抛出"客户端编辑中"的例外并阻止变更数据组。