0

我试图在我的项目中使用 KendoUI Grid。我要绑定到网格的数据源有很多我不希望作为列的额外部分以及其他几个选项。我想知道是否有一种方法可以从 javascript 设置网格的选项,但是当我尝试时,我似乎遇到了“数据”选项的问题。

<div data-bind="kendoGrid: $parent.kendoGrid"></div>


....
program = ko.observable(null),
kendoGrid = { data: program.BettingInterest, sortable: true, columnMenu: true,
            columns: [{ field: 'BettingInterestProgramNumber', title: 'Post' }, 
                { field: 'PostPosition', title: 'PP' }, { field: 'MLOdd', title: 'ML' },
                { field: 'FractionalOdd', title: 'Odds' }, 'Jockey', 'Trainer', 'Owner', 
                { field: 'WeightCarried', title: 'Weight' }, { field: 'Medication', title: 'Med' },
                { field: 'ClaimingPrice', title: 'Claiming' }, 'Breed'], 
            scrollable: false, resizable: true
        },
....

'program' 在一系列级联下拉列表中的最后一个之后被填充 我的网格显示了列等但没有实际数据。我想知道我是否只是缺少一些简单的东西......

4

1 回答 1

2

为了使这个属性与绑定一起工作,您需要创建一个表示当前程序的 BettingInterest 的计算对象,以便它可以正确跟踪依赖关系。您的视图模型看起来像:

var ViewModel = function() {
    this.program = ko.observable();
    this.programBettingInterest = ko.computed(function() {
       var program = this.program();
        return program ? program.BettingInterest : [];        
    }, this);

    this.myGrid = { data: this.programBettingInterest, sortable: true, columnMenu: true,
        columns: [{ field: 'propA', title: 'propertyA' }, 
            { field: 'propB', title: 'propertyB' }], 
        scrollable: false, resizable: true
    };
};

示例:http: //jsfiddle.net/rniemeyer/eqVWs/

于 2012-11-06T00:01:15.203 回答