koGrid行选择未更新行选择复选框

时间:2013-11-18 10:57:54

标签: knockout.js durandal kogrid

我在网页上使用了KoGrid,我选择了多行选择。因此,我的网格中添加了第一个复选框列。但是当我通过单击行选择KoGrid时,复选框被标记,但是当我单击复选框时,该行被选中但复选框为空。

我的KoGrid配置代码如下:

gridOptions = {
            data: "Some Data",
            columnDefs: [
                { field: 'TransactionId', displayName: 'Transaction ID' },
                { field: 'InvoiceNumber', displayName: 'Invoice Number' },
                { field: 'ContactName', displayName: 'Contact Name' },
                { field: 'Carrier', displayName: 'Carrier' },
                { field: 'InvoiceDate', displayName: 'Invoice Date' },
                { field: 'Amount', displayName: 'Amount' },
                { field: 'PaymentStatus', displayName: 'Payment Status' },
                { field: 'IsPastDue', displayName: 'Is Past Due', cellTemplate: '<label class="gridCheckBox"><input type="checkbox" data-bind="checked: $data.getProperty($parent)"></label></div>' },
                { field: 'DaysPastDue', displayName: 'Days Past Due' }
            ]
        };

无法找到究竟是什么问题。

请帮忙。 感谢

1 个答案:

答案 0 :(得分:1)

必须添加

return true; 

在事件 afterSelectionChange 中添加的方法,如果添加了任何事件捕获方法,则在网格配置中添加以下内容。

afterSelectionChange: function(){ return true; }

如果我们不添加上述代码, afterSelectionChange 将返回未定义 复选框 的原因 取消选中 ,即使在选中行选项后也会选中复选框。

所以我的决赛看起来如下:

gridOptions = {
        data: "Some Data",
        columnDefs: [
            { field: 'TransactionId', displayName: 'Transaction ID' },
            { field: 'InvoiceNumber', displayName: 'Invoice Number' },
            { field: 'ContactName', displayName: 'Contact Name' },
            { field: 'Carrier', displayName: 'Carrier' },
            { field: 'InvoiceDate', displayName: 'Invoice Date' },
            { field: 'Amount', displayName: 'Amount' },
            { field: 'PaymentStatus', displayName: 'Payment Status' },
            { field: 'IsPastDue', displayName: 'Is Past Due', cellTemplate: '<label class="gridCheckBox"><input type="checkbox" data-bind="checked: $data.getProperty($parent)"></label></div>' },
            { field: 'DaysPastDue', displayName: 'Days Past Due' }
        ],
       afterSelectionChange: function(){ return true; }
    };