Quantcast
Channel: Telerik Forums RSS
Viewing all articles
Browse latest Browse all 84751

Kendo Grid DataSource Repeating CRUD Calls (Returning ID From Server!!)

$
0
0

I'm having an issue with CRUD calls being repeated. It only happens if I make two CRUD calls in a row, the second one pulls in the first one's data. For example, if I have a grid that has three records on it:

1. I hit delete on the first record which successfully deletes that record, no issues (note that I AM returning the ID of that record back to the grid)

2. I hit delete on the second record and it uses that model's data of the first record. Entity framework of course throws an error because it can no longer find that entity since it was deleted in the first call.

controller:

public ActionResult CostsDestroy(string models)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    CapitalLeaseCostModel model = new CapitalLeaseCostModel();
    var CapitalLeaseCostModelArray = serializer.Deserialize<CapitalLeaseCostModel>(models);
    model = AccountingService.DeleteCapitalLeaseCost(CapitalLeaseCostModelArray);
 
    return PartialView(Json(model));
}

 

View:

@model DataNet.Common.Models.CapitalLease.CapitalLeaseCostModel
 
 
@*grid script*@
<script>
 
    $(document).ready(function () {
 
        dataSource = new kendo.data.DataSource({
            transport: {
                read: {
                    url: "/CapitalLease/CostsRead",
                    dataType: "json"
                },
                update: {
                    url: "/CapitalLease/CostsUpdate",
                    dataType: "json",
                    type: "POST",
                    complete: function (e) {
                        var grid = $('#capitalizedCostGrid').data("kendoGrid");
                        grid.dataSource.read();
                    }
                },
                destroy: {
                    url: "/CapitalLease/CostsDestroy",
                    dataType: "json",
                    type: "POST",
                    complete: function (e) {
                        e.success(data);
                        var grid = $('#capitalizedCostGrid').data("kendoGrid");
                        grid.dataSource.read();
                    }
                },
                create: {
                    url: "/CapitalLease/CostsCreate",
                    dataType: "json",
                    type: "POST",
                    complete: function (e) {
                        e.success(data);
                        var grid = $('#capitalizedCostGrid').data("kendoGrid");
                        grid.dataSource.read();
                    }
                },
                parameterMap: function (options, operation) {
                    if (operation !== "read" && options.models) {
                        options.models[0].StartDate = kendo.toString(kendo.parseDate(options.models[0].StartDate, 'yyyy-MM-dd'), 'MM/dd/yyyy');
                        options.models[0].EndDate = kendo.toString(kendo.parseDate(options.models[0].EndDate, 'yyyy-MM-dd'), 'MM/dd/yyyy');
                    }
                    if(operation === "create" && options.models){
                        options.models[0].EscalationTypeID = options.models[0].EscalationTypeID.ID;
                        options.models[0].EscalationFrequencyID = options.models[0].EscalationFrequencyID.ID;
                    }
                    if (operation === "destroy" && options.models) {
                        return { models: kendo.stringify(options.models[0]) };
                    } else {
                        return { models: kendo.stringify(options.models), keyID: 106715 };
                    }
                }
 
 
            },
            batch: true,
            pageSize: 20,
            schema: {
                model: {
                    id: "ID",
                    fields: {
                        ID: { editable: true, nullable: false, defaultValue: -1 },
                        Reason: { validation: { required: true } },
                        CapitalLeaseEscalationType: {
                            defaultValue: {
                                ID: 1,
                                EscalationType: "No Escalation"
                            }
                        },
                        CapitalLeaseEscalationFrequency: {
                            defaultValue: {
                                ID: 1,
                                EscalationFrequency: "Monthly"
                            }
                        },
                        EscalationTypeID: {
                            defaultValue: {
                                ID: 1,
                                EscalationType: "No Escalation"
                            }
                        },
                        EscalationFrequencyID: {
                            defaultValue: {
                                ID: 1,
                                EscalationFrequency: "Monthly"
                            }
                        }
                    }
                }
            }
        });
 
        $("#capitalizedCostGrid").kendoGrid({
            dataSource: dataSource,
            toolbar: ["create"],
            columns: [
            {
                field: "ID",
                title: "ID",
                hidden: true
 
            },
            {
                field: "Reason",
                title: "Reason"
            },
            {
                field: "Amount",
                title: "Amount",
                format: "{0:c}"
            },
            {
                field: "StartDate",
                title: "Start Date",
                type: "date",
                format: "{0:yyyy-MM-dd}",
                template: "#= kendo.toString(kendo.parseDate(data.StartDate, 'yyyy-MM-dd'), 'MM/dd/yyyy') #",
                editor: dateTimeEditor
                 
            },
            {
                field: "EndDate",
                title: "End Date",
                type: "date",
                format: "{0:yyyy-MM-dd}",
                template: "#= kendo.toString(kendo.parseDate(data.EndDate, 'yyyy-MM-dd'), 'MM/dd/yyyy') #",
                editor: dateTimeEditor
            },
            {
                field: "EscalationTypeID",
                title: "Escalation Type",
                editor: escalationTypeDropDownEditor,
                template: "#=CapitalLeaseEscalationType.EscalationType#"
            },
            {
                field: "EscalationFrequencyID",
                title: "Escalation Frequency",
                editor: frequencyTypeDropDownEditor,
                template: "#=CapitalLeaseEscalationFrequency.EscalationFrequency#"
            },
            {
                field: "EscalationPercentage",
                title: "Escalation Percent",
                template: "<div> #= kendo.toString(data.EscalationPercentage / 100, 'p0') #</div>"
            },
            {
                field: "EscalationMonetary",
                title: "Monetary Escalation",
                format: "{0:c}"
            },
            {
                command: ["edit", "destroy"], title: "Edit", width: "200px"
            }
            ],
            editable: "popup",
            edit: function (e) {
                e.container.find(".k-edit-label:first").hide();
                e.container.find(".k-edit-field:first").hide();
            },
            height: 200,
            autoSync: true
 
        })
 
        @*Attaches to Escalation type drop down list*@
        function escalationTypeDropDownEditor(container, options) {
        $('<inputrequired data-text-field="EscalationType"data-value-field="ID"data-bind="value:' + options.field + '"/>')
            .appendTo(container)
            .kendoDropDownList({
                autoBind: true,
                dataSource: {
                    type: "json",
                    transport: {
                        read: "/CapitalLease/CostsEscalationTypeRead"
                    }
                }
            });
        }
 
        @*Attaches to Escalation Frequency drop down list*@
        function frequencyTypeDropDownEditor(container, options) {
        $('<inputrequired data-text-field="EscalationFrequency"data-value-field="ID"data-bind="value:' + options.field + '"/>')
            .appendTo(container)
            .kendoDropDownList({
                autoBind: true,
                dataSource: {
                    type: "json",
                    transport: {
                        read: "/CapitalLease/CostsEscalationFrequencyRead"
                    }
                }
            });
        }
 
        @*Formats the date-picker in-grid*@
        function dateTimeEditor(container, options) {
        $('<inputdata-text-field="' + options.field + '"data-value-field="' + options.field + '"data-bind="value:' + options.field + '"data-format="' + options.format + '"/>')
                .appendTo(container)
                .kendoDatePicker({});
        }
 
    });
 
 
</script>
 
<style>
    .k-grid  .k-grid-header  .k-header  .k-link {
        height: auto;
    }
   
    .k-grid  .k-grid-header  .k-header {
        white-space: normal;
    }
</style>
 
 
@*Rent Information*@
<pclass="title">Section Two - Lease Costs to Capitalize</p>
<divstyle="padding:15px;">
    <divid="costsRowOne">
        <divid="capitalizedCostGrid"class="inline-control"></div>
    </div>
</div>

 

What am i missing here. 

 


Viewing all articles
Browse latest Browse all 84751

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>