1
我想用KnockoutJS来构建一个嵌套的可编辑gridview,我不知道在哪里或如何处理它。嵌套表与KnockoutJS可观察数组(父&子表)
我已经开始通过从我的服务器获取JSON数据并使用映射模型映射所需的JSON信息。我甚至有父网格与所有必需的值。 现在基于父网格的选择,它应该将2值传递给Child,然后应该出现Child JSON方法。而且因为它很明显应该是完全可观察的。
这里是我迄今所做的代码:
var data = {
"d": [{
"__type": "Warehouse.Tracntrace.Members_Only.StockMovement.ProductStagingMethod",
"ProductSKUID": 2,
"ProductSKUName": "Decoder 1131",
"WarehouseID": 1,
"WarehouseName": "SoftwareDevelopmentTest",
"SystemAreaName": "Staging",
"Qty": 5
}]
};
var data2 = {
"d": [{
"__type": "Warehouse.Tracntrace.Members_Only.StockMovement.StockReturnMethod",
"LotID": 3,
"LotName": "TestLot3",
"AreaID": 11,
"AreaName": "TestArea2L3",
"BinID": 20,
"BinName": "Area10Bin1"
}, {
"__type": "Warehouse.Tracntrace.Members_Only.StockMovement.StockReturnMethod",
"LotID": 4,
"LotName": "TestLot4",
"AreaID": 15,
"AreaName": "TestArea2L4",
"BinID": 24,
"BinName": "Area14Bin1"
}, {
"__type": "Warehouse.Tracntrace.Members_Only.StockMovement.StockReturnMethod",
"LotID": 2,
"LotName": "TestLot2",
"AreaID": 8,
"AreaName": "TestArea3L2",
"BinID": 18,
"BinName": "Area8Bin2"
}]
};
最后我简单的表:
<table border="1" cellpadding="0" cellspacing="0">
<tbody data-bind="foreach: items">
<tr>
<td>
<input type="button" name="ShowmetheChild" value="ShowmetheChild" id="child" /></td>
<td data-bind="text: ProductSKUID"></td>
<td data-bind="text: ProductSKUName"></td>
<td data-bind="text: WarehouseID"></td>
<td data-bind="text: WarehouseName"></td>
<td data-bind="text: SystemAreaName"></td>
<td data-bind="text: Qty"></td>
<div id="childtable" style="display: none";>
<table>
<tbody data-bind="foreach: Locations>
<tr>
<td data-bind="text: LotName"></td>
<td data-bind="text: AreaName"></td>
<td data-bind="text: BinName"></td>
<td><input type="text" name="Qty" data-bind="text: 0" /></td>
</tr>
</tbody>
</table>
</div>
</tr>
</tbody>
var ProductViewmodel;
function bindProductModel(Products) {
var self = this;
self.items = ko.mapping.fromJS([]);
ProductViewmodel = ko.mapping.fromJS(Products.d, self.items);
console.log(ProductViewmodel);
ko.applyBindings(ProductViewmodel);
}
function bindModel(data) {
var self = this;
self.Locations = ko.mapping.fromJS([]);
viewModel = ko.mapping.fromJS(data.d, self.Locations);
console.log(viewModel);
ko.applyBindings(viewModel);
}
$(document).ready(function() {
bindProductModel(data);
$('#child').click(function() {
bindModel(data2);
$('#childtable').show();
});
});
该得到的returend从服务器的JSON所以在父表中,数量表应该是可观察的(它应该随着在子表中输入的每个数量而减少e。)
任何意见将不胜感激。
嗨photo_tom, 感谢您的答复,我怎样才能把孩子表新表行,而不是列?所以子表显示在父表下面 –
我更新了我的代码,并创建了这个小提琴。我已将子网格选项添加到“下拉菜单”,但它无法正常运行。这里是链接:http://jsfiddle.net/Fumunchu/PUzpV/ –