Knockout.js 网格单元格中的Knockout-kendo.js下拉列表
有没有合适的方法将剑道ui下拉列表集成到剑道ui网格的列中 这是我用rniemeyer的试过的。 美元内(文档)。准备就绪:Knockout.js 网格单元格中的Knockout-kendo.js下拉列表,knockout.js,kendo-ui,Knockout.js,Kendo Ui,有没有合适的方法将剑道ui下拉列表集成到剑道ui网格的列中 这是我用rniemeyer的试过的。 美元内(文档)。准备就绪: 函数状态下拉编辑器(容器、选项){ $('') .appendTo(容器) .kendoDropDownList({ 自动绑定:错误, 数据源:{ 运输:{ 阅读:“/api/Status” } } }); HTML: 你可以使用击倒剑道的“使用模板”选项。下面是你的方法 <script id='rowTemplate' type='text/html'>
函数状态下拉编辑器(容器、选项){
$('')
.appendTo(容器)
.kendoDropDownList({
自动绑定:错误,
数据源:{
运输:{
阅读:“/api/Status”
}
}
});
HTML:
你可以使用击倒剑道的“使用模板”选项。下面是你的方法
<script id='rowTemplate' type='text/html'>
<tr> <td> <span data-bind = "text:ProdName" > </span> </td>
<td> <span data-bind = "text:UnitCost" > </span> </td>
<td> <span data-bind = "text:TotalAmt" > </span> </td>
<td> <select data-bind = "options:$parent.availabeStates,value:Status" > </select> </td>
</tr>
</script>
<table id="prod-grid" data-bind="kendoGrid: { data: Products, height: 480,
sortable: true,useKOTemplates:true,rowTemplate: 'rowTemplate',
columns: [
{ field: 'ProdName', title : 'Product Name'},
{ field: 'UnitCost', title: 'Unit Cost'},
{ field: 'TotalAmt', title: 'Batch Total'},
{ field:'Status', title: 'Status'}]
}"></table>
<div data-bind="foreach:Products">
<span data-bind="text:ProdName"></span>
</div>
var vm = function () {
var self = this;
self.Products = ko.observableArray();
self.availabeStates = ['Fulfilled', 'Pending']
self.init = function () {
self.Products.push({
ProdName: 'Prod1',
UnitCost: 200,
TotalAmt: 400,
Status: 'Fulfilled'
});
self.Products.push({
ProdName: 'Prod2',
UnitCost: 200,
TotalAmt: 400,
Status: 'Pending'
});
};
self.init();
}
ko.applyBindings(new vm());
var vm=函数(){
var self=这个;
self.Products=ko.observearray();
self.availableEstates=[“已完成”、“待定”]
self.init=函数(){
自我推销({
ProdName:“Prod1”,
单位成本:200,
总数:400,
状态:“已完成”
});
自我推销({
ProdName:“Prod2”,
单位成本:200,
总数:400,
状态:“待定”
});
};
self.init();
}
应用绑定(新vm());
这是给你的JSFIDLE
我没有故意使用剑道下拉列表,因为我对下拉列表的zIndex有问题,但这是你应该解决的问题,我想这与Q/A无关。我建议你不要在绑定中定义你的kendoGrid
与你的HTML内联。在我看来,这是一种糟糕的做法。它可能会导致各种问题。请将你的代码和标记分开E
<div id="prod-grid" data-bind="kendoGrid: { data: Products, height: 480,
sortable: true, selectable: 'row', scrollable: true, resizable: true, pageable: false,
columns: [
{ field: 'ProdName', title : 'Product Name'},
{ field: 'UnitCost', title: 'Unit Cost'},
{ field: 'TotalAmt', title: 'Batch Total'},
{ field: 'Manufacturer', title: 'Manufacturer'},
{ title: 'Status', editor: statusDropDownEditor}
}>
</div>
<script id='rowTemplate' type='text/html'>
<tr> <td> <span data-bind = "text:ProdName" > </span> </td>
<td> <span data-bind = "text:UnitCost" > </span> </td>
<td> <span data-bind = "text:TotalAmt" > </span> </td>
<td> <select data-bind = "options:$parent.availabeStates,value:Status" > </select> </td>
</tr>
</script>
<table id="prod-grid" data-bind="kendoGrid: { data: Products, height: 480,
sortable: true,useKOTemplates:true,rowTemplate: 'rowTemplate',
columns: [
{ field: 'ProdName', title : 'Product Name'},
{ field: 'UnitCost', title: 'Unit Cost'},
{ field: 'TotalAmt', title: 'Batch Total'},
{ field:'Status', title: 'Status'}]
}"></table>
<div data-bind="foreach:Products">
<span data-bind="text:ProdName"></span>
</div>
var vm = function () {
var self = this;
self.Products = ko.observableArray();
self.availabeStates = ['Fulfilled', 'Pending']
self.init = function () {
self.Products.push({
ProdName: 'Prod1',
UnitCost: 200,
TotalAmt: 400,
Status: 'Fulfilled'
});
self.Products.push({
ProdName: 'Prod2',
UnitCost: 200,
TotalAmt: 400,
Status: 'Pending'
});
};
self.init();
}
ko.applyBindings(new vm());