我遇到了kendo-ui网格无法解决的问题。在我的应用程序中,我在批处理编辑模式下使用kendo-grid,以允许数据输入人员快速编辑屏幕上的多个记录。此特定网格设置为允许分页和排序。
我正在寻找一种方法来提示用户在特定页面上进行编辑时(例如在datagrid / datasource的页面中)尝试排序或单击其中一个分页链接时。如果用户单击“确定”,那么我想继续进入下一页数据,否则我想取消编辑并使用现有编辑将用户保留在当前页面上。我的另一个选择就是在分页或排序时自动提交任何更改,或允许它们取消并保留在当前页面上。
到目前为止,我尝试使用实际网格数据源上的change事件将脏标志存储到observable中,然后通过监听网格的dataBinding事件并尝试捕获实际的排序或分页更改并显示当我的isDirty标志为true并且dataBinding事件的e.action ==“rebind”时提示。
我使用这种方法的问题是,在网格dataSource已经执行了另一个页面的提取而不是之前的事件之后,dataBinding事件会触发。这使我无法保存任何编辑内容,甚至无法保留现有编辑内容。
我找不到任何可以订阅的事件,这样我就可以在页面提取/排序之前进行检查。有没有其他人想出办法来处理这种情况?在我看来,人们想要在数据输入应用程序中处理它是一件非常普遍的事情。
答案 0 :(得分:0)
我通过订阅dataSource的requestStart事件解决了我的问题。所以现在我的Kendo Datasource看起来像这样:
{
pageSize: 15,
batch: false,
schema: {
model: {
id: "LocalId",
fields: {
LocalId:
{
editable: false,
nullable: true
},
Ssn: {
validation: {
required: true
}
},
QtrEarnings: {
type: "number",
defaultValue: 0,
validation: { required: true, min: 0 }
}
}
}
},
change: function (e) {
onDataChange(e);
},
requestStart: function (e) {
if (homeModel.get("dataSource").hasChanges()) {
if (confirm("You have made edits to data! Click Cancel to stay on this page or click Ok to abandon your changes and continue.") == false) {
e.preventDefault();
}
}
}
}