gpt4 book ai didi

javascript - Kendo 网格组合框将未定义的数据发送到 DataSource

转载 作者:行者123 更新时间:2023-11-29 14:57:21 25 4
gpt4 key购买 nike

我有一个剑道网格,其中有一列使用组合框,该组合框绑定(bind)到名为“Worker”(ID,Workername)的对象。这工作正常,除非用户将组合框文本设置为与任何下拉选项都不匹配的字符串(例如:'xxxx')。组合框将 Worker 的值设置为字符串 ('xxxx') 而不是 Worker 对象,此时数据源在收到格式错误的数据时停止响应。

我已经让它在数据源“更改”事件中工作,该事件在网格的“保存”事件之后触发。有问题的 dataItem 的属性被变量 myWorkerStart 覆盖(在网格的编辑事件中捕获):

myDataSource.bind("change", function (e) {
if (e.field) {
if (e.field == "Worker") {
rowDataItem = myGrid.dataItem(myGrid.tbody.find("tr.k-grid-edit-row"));
var currentWorker = rowDataItem.Worker;
var myType = $.type(currentWorker);
if (myType != "object") {
alert('Ooooh, BAD worker, reverting to starting value');
rowDataItem.set('Worker', myWorkerStart);
}
}
}
alert("datasource change");
})

我在 Telerik 论坛的几个主题中看到了这个主题,但大部分都没有得到答复。 Telerik 支持人员告诉我,我应该解决网格“保存”事件中未定义的值,但该事件会在组合框设置行之前触发。我可以看到这些值,但我不确定在哪里可以设置这些值以防止将未定义的值发送到数据源(容器,模型)在发送未定义的组合框值之前是否有更好的方法来解决格式错误的数据到网格?

myGrid.bind("save", function (e) {
myCombo = $('#Worker').data("kendoComboBox");
rowDataItem = myGrid.dataItem(myGrid.tbody.find("tr.k-grid-edit-row"));
myPreviousWorker = e.model.Worker;//Worker previously
myNewWorker = myCombo.dataItem();//Worker about to be set by selected Combobox.
if (myNewWorker) {
alert("GOOD worker");
} else {
alert("BAD worker");
}
//Manipulate the combobox/container/model values
})

最佳答案

Petur Subev 能够提供这个答案:jsbin

在带有“批量”保存的网格示例中,网格的“保存”事件检查组合框中未定义的选择,然后绑定(bind)一次 (jquery .one()) 到模型的更改事件以设置所需的值仅当组合框选择未定义时才在保存期间。

http://jsbin.com/edamuj/649/edit


//grid configuration setup
save:function(e){
if(!e.container.find('[data-role=combobox]').data().kendoComboBox.dataItem())
{
e.model.one('change',function(e){
this.set('test',{CategoryName:"Bevarages",CategoryID: "001"})
})

}

this.refresh();
}

下面的网格示例没有批量保存(例如内联编辑),只需要在网格保存时触发,不需要额外绑定(bind)到模型更改。 Petur的其他jsbin

save:function(e){
if(!e.container.find('[data-role=combobox]').data().kendoComboBox.dataItem())
{
e.model.set('test',{CategoryName:"Bevarages",CategoryID: "001"})
}

this.refresh();
}

关于javascript - Kendo 网格组合框将未定义的数据发送到 DataSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15691774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com