2017-10-20 1 views
0

Ich verwende das KoGrid-Plugin, um ein Knockout-Gitter mit Auswahlkästchen zu haben. Ich habe den folgenden Code bisher.KoGrid Row Selection Binding

function columnDefsVM() { 
    var self = this; 
    this.myData = ko.observableArray(GlobalJson); 
    this.mySelectedData = ko.observableArray(SelectedJson); 

    this.gridOptions = { 
     data: self.myData, 
     columnDefs: [{ field: 'TestEventId', displayName: 'Name' }], 
     selectedItems: self.mySelectedData, 
     enablePaging: false, 
    }; 
} 
ko.applyBindings(new columnDefsVM()); 

Im frage mich, wie ich die selectedItems Eigenschaft zugreifen, so dass ich die ausgewählten Werte an einen Ajax-Aufruf passieren kann?

Oder kann ich dies nicht tun und muss die ausgewählte Id manuell auf ein Array mit der afterSelectionChange Option schieben?

Antwort

2

In Ihrem gridOptions Sie in einem Verweise auf Ihre mySelectedData beobachtbaren Array übergeben als SelectedItems zu verwenden, so sollten Sie in der Lage sein, die ursprünglichen mySelectedData Variable verwenden anstelle von SelectedItems; sie sind gleichwertig. mySelectedData wird aktualisiert, wenn sich die Rasterauswahl ändert.

function columnDefsVM() { 
 
    var self = this; 
 
    this.myData = ko.observableArray([ 
 
    \t {TestEventId: 1, Name: 'Object 1'}, 
 
    \t {TestEventId: 2, Name: 'Object 2'}, 
 
    \t {TestEventId: 3, Name: 'Object 3'}, 
 
    ]); 
 
    this.mySelectedData = ko.observableArray([]); 
 

 
    this.gridOptions = { 
 
     data: self.myData, 
 
     columnDefs: [{ field: 'TestEventId', displayName: 'Name' }], 
 
     selectedItems: self.mySelectedData, 
 
     enablePaging: false, 
 
    }; 
 
} 
 
ko.applyBindings(new columnDefsVM());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdn.jsdelivr.net/gh/Knockout-Contrib/[email protected]/koGrid-2.0.6.debug.js"></script> 
 
<link href="https://cdn.jsdelivr.net/gh/Knockout-Contrib/[email protected]/KoGrid.css" rel="stylesheet" /> 
 

 
<label>mySelectedData: </label><span data-bind="text: ko.toJSON(mySelectedData)"></span> 
 
<br/> 
 
<br/> 
 
<div style="height:200px;" data-bind="koGrid: gridOptions"></div>