/ / Ako odstrániť riadok mriežky kendo ui založený na hodnote stĺpca - javascript, asp.net-mvc, kendo-ui, kendo-grid

Ako odstrániť riadok kendo ui na základe hodnoty stĺpca - javascript, asp.net-mvc, kendo-ui, kendo-grid

Na asp.čisté zobrazenie mvc, mám zobrazenie Kendo UI a mriežku používateľského rozhrania Kendo. Každé začiarkavacie políčko v stromovom prehľade má rovnakú hodnotu id v stĺpci ID mriežky. Vždy, keď zruším zaškrtnutie políčka v stromovom prehľade, chcem odstrániť zodpovedajúci riadok v mriežke, ktorý má túto hodnotu id. ID je jedným zo stĺpcov v mriežke. Nasleduje môj kód:

Nasledujúca funkcia sa vykoná odškrtnutím akcie na stromovom prehľade

function onCheck() {
var checkedNodes = [],
treeView = $("#treeview").data("kendoTreeView"),

var myNodes = treeView.dataSource.view();

for (var i = 0; i < myNodes.length; i++) {
var children = myNodes[i].children.view();
if (children) {
for (var j = 0; j < children.length; j++) {

if ((typeof children[j].checked !== undefined)  && (!children[j].checked)) {
alert("You unchecked " + children[j].id); //This shows the correct id value
var dataItem = $("#grid").data("kendoGrid").dataSource.get(children[j].id);
$("#grid").data("kendoGrid").dataSource.remove(dataItem);
}
}
}
}

Nasleduje kód pre mriežku:

      $("#grid").kendoGrid({
pageable:true,
dataSource: dataSource, //comes as json from a url
schema: {
model: {
id: "ID"
}
},
pageSize:3,


columns: [
{
hidden: true,
field: "ID"

},
{
field: "MyFileName"
},
});

Keď som ladil, dataItem v var dataItem =.. $ ( "# Grid") dáta ( "kendoGrid") dataSource.get (deti [j] .id); je nedefinovaná. ID, ktoré sa načítalo stromové zobrazenie a id v mriežke sa však zhodovali. Toto je chyba, ktorú vidím: 0x800a138f - Chyba runtime JavaScriptu: Nedá sa získať vlastnosť „uid“ nedefinovaného alebo nulového odkazu

Zrejme sa nevymaže žiadny riadok mriežky.

Vďaka

odpovede:

1 pre odpoveď č. 1

Vyskúšajte to pri udalosti zmeny začiarkavacieho políčka:

var id = treeView.dataItem(this.closest("li")).id;
var gridDataItem = grid.dataSource.data().filter(function(item) {
return item.id == id;
})[0];

grid.removeRow("tr[data-uid="" + gridDataItem.uid + ""]");

Na filter metóda nájde súvisiaci riadok v mriežke podľa aktuálneho stavu id, Použite mriežku removeRow() okamžité odstránenie priamo z dátového zdroja.

demonštrácie