用户可以通过使用Ctrl+Del键,删除当前所选的行。 如果提出删除请求的行的列表传递至DataSet,并且数据组实际删除列表中连接在网格行上的各个数据行,其结果就会重新反映到网格中。
为实现用户删除,首先需要将GridBase.editOptions的deletable设置为true(默认值为false)。 而且,如果EditOptions.confirmWhenDelete为true(默认值),就会在实际进入删除步骤之前, 将会显示通过EditOptions.deleteMessage指定的删除确认对话框。
类似于行修改或行添加的方式,当从数据组中删除数据行后, 将会触发GridDataSet.onRowsDeleted事件,并且在删除之前,将会触发GridDataSet.onRowsDeleting事件。 如果在这个事件中明确返回false,就不会进行删除。
另外,网格将删除请求传递至数据组之前,首先会触发onDeleting事件, 而如果同样在这个事件处理器中明确返回false,就会取消行删除。
grdMain.onDeleting = function (grid, rowIndices) {
if ($('#chkEventDeletable').is(':checked')) {
return false;
}
};
当用户使用ctrl+del键而删除所选行时,替代从数据组中实际清除这些行的方式,可以只将其状态变更为删除状态。 如果将DataSet.softDelete属性指定为true并删除数据行, DataRowState.CREATED状态的行将会变更为CREATE_AND_DELETED,而其他行将会变更为DELETED状态。
之后,可以向服务器提出请求,并统一删除处于删除状态的行。 而且,也可以恢复处于删除状态的行。