1

私は剣道グリッドとグリッドを使用しています。特定の状況では、メソッドを使用してグリッドのデータソースにデータを追加していますgrid.dataSource.add()。以下はグリッドの構成です。

var itemcodedataSource = new kendo.data.DataSource({
            dataType: "json",
            transport: {
                    read: function(o){
                       o.success([]);
                    },
                    create: function(o) {                      
                        var item = o.data;
                            //assign a unique ID and return the record
                            item.id =  len;
                            o.success(item);
                            len++;
                    },
                    destroy: function(o) {
                          o.success();
                    },
                    update: function(o){
                          o.success();
                    }         
            },                      
            autoSync: true,
            schema: {                       
            model: {
                id    : "id",
                fields: {
                        type_flag: {validation: {}},
                        item_code:{validation:{}},
                        bill_no:{validation:{}},
                        item_code_desc: {validation: {},editable:false},
                        line_balance:{validation:{},type:"number",editable:false},
                        collection_status:{validation:{},editable:false},
                        amount:{validation:{required:false},type:"number",nullable:false },
                        item_detail:{},
                        total_balance:{type:"number",nullable:false},
                        total_due:{type:"number",nullable:false},
                        amt_edit_flag:{},
                    }   
                }
            },
        });

        $("#itemcode_grid").kendoGrid({
                dataSource: itemcodedataSource,
                selectable: "multiple",
                change     : calcTotals,
                toolbar: ["create"],
                    columns:[
                                { field: "type_flag", width: "90px", title: "Type",sortable:false,
                                },
                                { field: "item_code", width: "80px", title: "Item Code",sortable:false
                                },
                                { field: "bill_no", width: "80px", title: "Bill Number",sortable:false
                                },
                                { field: "line_balance", width: "50px", title: "Deferrals",sortable:false
                                },
                                { field: "collection_status", width: "50px", title: "Hold",sortable:false
                                },
                                { field: "amount", width: "70px", title: "Payment",sortable:false
                                },
                                { command: ["edit", "destroy"], title: "Options", width: "130px"},
                            ],
                    editable: "inline",
                });

そして、この方法でデータをデータソースに追加しています

var gridDs      =   $("#itemcode_grid").data("kendoGrid").dataSource;
            for (var i = 0; i < gridData.length; i++) {
                gridDs.add({
                    type_flag           : gridData[i].type_flag, 
                    item_code           : gridData[i].item_code,
                    bill_no             : detailsData[i].bill_no, 
                    item_code_desc      : detailsData[i].itemcode_details.item_code_desc,
                    line_balance        : gridData[i].line_deferred, 
                    collection_status   : detailsData[i].collection_status,
                    amount              : parseFloat(gridData[i].amount),
                    qty_pricing_type    : detailsData[i].itemcode_details.qty_pricing_type,
                    item_detail         : res[0][i],
                    total_balance       : parseFloat(detailsData[i].line_balance),
                    total_due           : detailsData[i].line_due,
                    id                  : gridDs._data.length+1,
                });

                gridDs.sync();
            }

detailsDataとはajaxgridDataの応答です。私の問題は、このメソッドが新しいデータをグリッドに追加することです。しかし、編集をクリックしてキャンセルすると、選択した行がグリッドから削除されます。通常、これはグリッド内の項目にない場合に発生します。一意のID.しかし、チェックしたところ、アイテムはすべて一意のIDを持っています.このコードの問題は何ですか.このエラーを解決する方法.よろしくお願いします.

4

1 に答える 1