2016-09-06 2 views
0

Ich habe ein Kendo UI Grid, in dem ich 2 Spalten StartDate und EndDate habe. Während der Inline-Bearbeitung möchte ich vergleichen, dass StartDate nicht größer als EndDate sein sollte. Ich mache das unten in der benutzerdefinierten Validierung des StartDate-Felds. Aber der var StartDate wird Nullwert zugewiesen.Wie Daten in 2 Spalten einer Zeile in Kendo UI Grid zu vergleichen?

model: { 
       id: "BusinessAreaDivisionMappingId", 
       fields: { 
        BusinessAreaDivisionMappingId: { type: "number", editable: false, nullable: false }, 

        StartDate: { 
         from: "BusinessAreaDivisionMappingEntity.StartDate", type: "date", 
         validation: 
          { 
           required: true, 
           dateComparisonValidation: function (input) { 
            debugger; 
            if (input && (input.attr("name") == "StartDate"|| input.attr("name") == "EndDate")) { 
             input.attr("data-dateComparisonValidation-msg", "Start Date cannot be more than End Date"); 
             var startDate = input.closest(".k-edit-form-container").find("[name='StartDate']").data("kendoDatePicker"); 
             var endDate = input.closest(".k-edit-form-container").find("[name='EndDate']").data("kendoDatePicker"); 
             if (Date(startDate) > Date(endDate)) { 
              return false; 
             } 
            } 
            return true; 
           } 
          } 
        }, 
        EndDate: { from: "BusinessAreaDivisionMappingEntity.EndDate", type: "date" } 
       } 
      } 

Antwort

1

UPDATE

hier voll funktionsfähiges Beispiel:

http://dojo.telerik.com/IqeNA


Ich denke, es ist wirklich besser für expirience Benutzer nicht in der Lage sein, ungültige Werte auszuwählen, zu vergleichen, um zu sehen, dass diese Werte nicht gültig sind, wählen Sie sie erneut aus.

Wenn Sie damit einverstanden, dass benutzerdefinierten Editor für Ihre Spalten mit Daten hinzufügen:

var dateEditor = function (container, options) { 
var input = $('<input />'); 

input.appendTo(container) 
    .kendoDatePicker({ 
    format: "dd.MM.yyyy" 
    }); 
var datePicker = input.data("kendoDatePicker"); 
    switch (options.field) { 
    case "startDate": 
     if (options.model.finishDate) { 
     datePicker.max(options.model.finishDate); 
     } 
     break; 

    case "finishDate": 
     if (options.model.startDate) { 
     datePicker.min(options.model.startDate); 
     } 
     break; 
    } 
}; 

Lesen Sie mehr über benutzerdefinierte Editoren hier

http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#configuration-columns.editor

Wenn Sie Probleme mit dem Hinzufügen von Editoren für Inline-Editor haben diesen Artikel lesen

Kendo Grid using inline editing and custom editor dropdown control

+0

Dies funktioniert nicht, angenommen Schritt 1: Ich wähle Startdatum 6. Sept. Schritt 2: Ich kann Enddatum 5thSept auswählen. – Anand

+0

Was funktioniert nicht? Sie haben Fehler? Das ist perfekt funktionierende Lösung Ich benutze es in der Produktion –

+0

In Ihrem Fall benannten Sie Modellfelder beginnend mit Großbuchstaben. 'StartDatum' vs 'Startdatum'. Versuchen Sie, es zuerst zu debuggen, ersetzen Sie Namen mit denen, die Sie in Modell –