Javascript 如何通过数组传入的Id选择剑道网格项?

Javascript 如何通过数组传入的Id选择剑道网格项?,javascript,jquery,asp.net-mvc,kendo-ui,Javascript,Jquery,Asp.net Mvc,Kendo Ui,在我的MVC web应用程序中,我有一个带有复选框的剑道网格。我正在尝试设置一些在databind上触发的初始选择。这是我的网格代码: @(Html.Kendo().Grid<MyProject.ViewModels.MyViewModel>() .Name("MyGrid") .Columns(columns => { columns.Select().Width(50); columns.Bound(c => c.Id); columns.Bo

在我的MVC web应用程序中,我有一个带有
复选框的剑道网格。我正在尝试设置一些在
databind
上触发的初始选择。这是我的网格代码:

@(Html.Kendo().Grid<MyProject.ViewModels.MyViewModel>()
.Name("MyGrid")
.Columns(columns => {
    columns.Select().Width(50);
    columns.Bound(c => c.Id);
    columns.Bound(c => c.Name).Title("Name")
})
.Pageable()
.Sortable()
.Events(ev => ev.DataBound("onChange"))
.PersistSelection()    
.DataSource(dataSource => dataSource
    .Ajax()
    .Model(model => model.Id(p => p.Id))
    .Read(read => read.Action("GetData", "Test"))
))
这段代码只带我走了一段路。我想做的和需要帮助的是,调整此代码以接受ID数组并选择这些项。出于测试目的,我制作了一个非常基本的数组,名为
arr
,但我不确定如何将其传递到循环中

我尝试使用jquery
each
循环来迭代数组中的每个值并选择行,但没有成功。代码类似于:

function onChange(e) {
    //Sample array
    var arr = [206, 210];

    $.each(arr, function(i, v) {
        if (e.sender.dataItem(e.sender.items()[i]).Id == v) {
            e.sender.select(e.sender.items()[i]);
        }
    })
}
感谢您的帮助。

用于检查阵列中是否存在每个
Id

function onChange(e) {
    //Sample array
    var arr = [206, 210],
        grid = e.sender;

    for (var i = 0; i < grid.items().length; i++) {
        if (arr.indexOf(grid.dataItem(grid.items()[i]).Id) > -1) {
            grid.select(grid.items()[i]);
        }
    }
}
函数更改(e){
//样本阵列
var arr=[206210],
grid=e.sender;
对于(var i=0;i-1){
grid.select(grid.items()[i]);
}
}
}
工作示例:

设arr=[1,3,5,7],
数据=[1,2,3,4,5,6,7,8,9,10];
for(设i=0,len=data.length;i-1){
log(`item${data[i]}存在于数组`)中;
}
}
用于检查阵列中是否存在每个
Id

function onChange(e) {
    //Sample array
    var arr = [206, 210],
        grid = e.sender;

    for (var i = 0; i < grid.items().length; i++) {
        if (arr.indexOf(grid.dataItem(grid.items()[i]).Id) > -1) {
            grid.select(grid.items()[i]);
        }
    }
}
函数更改(e){
//样本阵列
var arr=[206210],
grid=e.sender;
对于(var i=0;i-1){
grid.select(grid.items()[i]);
}
}
}
工作示例:

设arr=[1,3,5,7],
数据=[1,2,3,4,5,6,7,8,9,10];
for(设i=0,len=data.length;i-1){
log(`item${data[i]}存在于数组`)中;
}

}
这里我有一个带函数的名称空间myApp,我在其中添加了一个
klookup
函数来返回数组中的第一个匹配项,然后选择使用它。注意:我使用剑道数据样本使用了
dataBound
事件

//为我的函数创建名称空间
var myApp=myApp | |{};
myApp.funcs={
klookup:函数(myArray、searchTerm、property、firstOnly){
发现的var=[];
var i=myArray.items().length;
而(我--){
if(myArray.dataItem(myArray.items()[i])[property]==searchTerm){
found.push(myArray.items()[i]);
if(firstOnly)break;//如果只有第一个
}
}
发现退货;
},
onDataBound:函数(e){
//console.log(“onDataBound”);
myApp.data.Sender=e.Sender;
设s=myApp.data.Sender
//console.dir(myApp.data.arr);
设行=s.items();
//console.log(行);
myApp.data.arr.forEach(函数(条目){
let found=myApp.funcs.klookup(s,条目“OrderID”,true);
s、 选择(找到[0]);
});
}
};
//将数据添加到我的命名空间
myApp.data={
arr:[1024810250]
};
$(函数(){
$(“#网格”).kendoGrid({
数据源:{
类型:“odata”,
运输:{
阅读:“https://demos.telerik.com/kendo-ui/service/Northwind.svc/Orders"
},
模式:{
型号:{
字段:{
医嘱ID:{
类型:“编号”
},
运费:{
类型:“编号”
},
船名:{
类型:“字符串”
},
订购日期:{
类型:“日期”
},
船舶城市:{
类型:“字符串”
}
}
}
},
页面大小:5,
对,,
是的,
服务器排序:true
},
选择:对,,
数据绑定:myApp.funcs.onDataBound,
身高:550,
可过滤:正确,
可排序:是的,
pageable:对,
栏目:[{
是的,
宽度:“50px”
}, {
字段:“订单ID”,
可过滤:false
},
“运费”,
{
字段:“订单日期”,
标题:“订单日期”,
格式:“{0:MM/dd/yyyy}”
}, {
字段:“ShipName”,
标题:“船名”
}, {
字段:“ShipCity”,
标题:“船舶城”
}
]
});
});

这里我有一个带函数的名称空间myApp,我在其中添加了一个
klookup
函数来返回数组中的第一个匹配项,然后选择使用它。注意:我使用剑道数据样本使用了
dataBound
事件

//为我的函数创建名称空间
var myApp=myApp | |{};
myApp.funcs={
klookup:函数(myArray、searchTerm、property、firstOnly){
发现的var=[];
var i=myArray.items().length;
而(我--){
if(myArray.dataItem(myArray.items()[i])[property]==searchTerm){
found.push(myArray.items()[i]);
if(firstOnly)break;//如果只有第一个
}
}
发现退货;
},
onDataBound:函数(e){
//console.log(“onDataBound”);
myApp.data.Sender=e.Sender;
设s=myApp.data.Sender
//console.dir(myApp.data.arr);
设行=s.items();
//console.log(行);
myApp.data.arr.forEach(函数(条目){
let found=myApp.funcs.klookup(s,条目“OrderID”,true);
s、 选择(找到[0]);
});
}
};
//将数据添加到我的命名空间
myApp.data={
arr:[1024810250]
};
$(函数(){
$(“#网格”).kendoGrid({
数据源:{
类型:“odata”,
运输:{
阅读:“https://demos.telerik.com/kendo-ui/service/Northwind.svc/Orders"
},
模式:{
型号:{
字段:{
医嘱ID:{
类型:“编号”
},
运费:{
类型:“编号”
},
船名:{
类型:“字符串”
},
订购日期:{
类型:“日期”
},
船舶城市:{