Kendo ui 在剑道UI甘特图中自动移动后续任务

Kendo ui 在剑道UI甘特图中自动移动后续任务,kendo-ui,kendo-gantt,Kendo Ui,Kendo Gantt,我正在尝试自动更新telerik甘特图任务 假设我提前一天执行任务,那么它应该自动提前一天执行后续任务 下面的函数自动移动所有后续任务,但问题是,一旦我刷新页面,我所做的更改将丢失,并且只保存我移动的任务。不要保留我使用tasksDataSource.update所做的更改 完整代码在这里 您需要使用moveEnd事件,因为它唯一地标识正在移动的任务(当任务持续时间发生更改时,您可能还需要使用resizeEnd事件)。如果更改实际移动的任务,则需要调用e.preventDefault()以防止

我正在尝试自动更新telerik甘特图任务

假设我提前一天执行任务,那么它应该自动提前一天执行后续任务

下面的函数自动移动所有后续任务,但问题是,一旦我刷新页面,我所做的更改将丢失,并且只保存我移动的任务。不要保留我使用
tasksDataSource.update所做的更改

完整代码在这里


您需要使用moveEnd事件,因为它唯一地标识正在移动的任务(当任务持续时间发生更改时,您可能还需要使用resizeEnd事件)。如果更改实际移动的任务,则需要调用e.preventDefault()以防止调用save方法,该方法将使用e.start和e.end值覆盖您的更改。您需要使用moveEnd事件,因为它唯一地标识正在移动的任务(更改任务持续时间时,可能还需要使用resizeEnd事件)。如果更改实际移动的任务,则需要调用e.preventDefault()以防止调用save方法,该方法将使用e.start和e.end值覆盖您的更改

  function onSave(e) {

                //reinitialize array
                updatedSuccessorsIds = new Array();

                var gantt = e.sender;

                var newStartDate = e.values.end;
                var oldStartDate = e.task.end;

                var diffMs = newStartDate - oldStartDate; // milliseconds between now & old
                var diffMins = Math.round(diffMs / 60000);

                var currentTaskId = e.task.id.toString();

                var dependencies = dependenciesDataSource.successors(currentTaskId);

                $.each(dependencies, function (key, depend) {
                    updateSuccessor(depend.successorId, diffMins);
                });

                //kendoConsole.log("Task saved :: " + e.task.title);
            }

            function onDataBound() {
                //kendoConsole.log("Gantt data bound");
            }

            function onDataBinding() {
                //kendoConsole.log("Gantt data binding");
            }

            function onNavigate(e) {
                //kendoConsole.log(kendo.format("navigate:: view:{0};", e.view));
            }


            function onMoveStart(e) {
                //kendoConsole.log("moveStart");
            }

            function onMove(e) {
                //kendoConsole.log("move");
            }

            function onMoveEnd(e) {


            }

            function updateSuccessor(successortaskId, diffMins) {

                var successortask = tasksDataSource.get(successortaskId);

                if (successortask.summary)
                    return true;//this is parent so ignore its node

                var successortaskStartDate = successortask.start;
                successortaskStartDate.setMinutes(successortaskStartDate.getMinutes() + diffMins);

                var successortaskEndDate = successortask.end;
                successortaskEndDate.setMinutes(successortaskEndDate.getMinutes() + diffMins);


                tasksDataSource.update(successortask,
                                        {
                                            start: successortaskStartDate,
                                            end: successortaskEndDate
                                        });

                //put updated successortask in array so we can use this array to find parent node to update
                updatedSuccessorsIds.push(successortaskId);

                var dependencies = dependenciesDataSource.successors(successortaskId);

                $.each(dependencies, function (key, depend) {
                    updateSuccessor(depend.successorId, diffMins);
                });

            }