2016-08-10 3 views
0

Ich versuche, eine Instanz des aktuellen modalen Fensters zu erhalten (um die Daten des modalen Fensters in einer Datei zu speichern). Aber kein Erfolg. Ich habe versucht, dies über onActivate und dann console.log ($ (this));So erhalten Sie dataItem des modalen Fensters (Kendo-UI)

Was ist die korrekte Methode dafür? Oder ich hätte die Daten über eine Vorlage ausfüllen sollen und dann die Inhaltseigenschaft des kendoWindow verwenden sollen? DANKE!

Grid:

$("#grid") 
    .kendoGrid({ 
     dataSource: { 
      transport: { 
       read: { 
        url: "/api/GridData/GetCustomers", 
        dataType: "json" 
       } 
      } 
     },  
     columns: [ 
       { 
      command: { text: "View Details", click: viewDt }, 
        title: "View DT", 
        width: "100px" 
       } 
      ] 
    }); 

HTML:

<form id="formViewDetail"> 
    Имя клиента:<br> 
    <input type="text" name="ClientName" id="ClientNameViewDetail" value=""> 
    <br> 

    ОКПО:<br> 
    <input type="text" name="ClientOKPO" id="ClientOKPOViewDetail"> 
    <br> 
    Дата регистрации:<br> 
    <input type="text" name="RegistrationDate" id="RegistrationDateViewDetail"> 
    <br> 
    Дата закрытия:<br> 
    <input type="text" name="RemovalFromClientsDate" id="RemovalFromClientsDateViewDetail"> 
    <br> 
    Комментарий:<br> 
    <input type="text" name="Comment" id="CommentViewDetail"> 
    <br> 
<button id="SubmitViewDetail">Сохранить</button> <button id="CloseViewDetail">Закрыть</button> 
</form> 

Modal Fenster:

var myWindow = $("#window"); 

    myWindow.kendoWindow({ 
     width: "600px", 
     title: "Редактирование данных клиента:", 
     visible: false, 
     actions: [ 
      "Pin", 
      "Minimize", 
      "Maximize", 
      "Close" 
     ], 
     activate: onActivateWnd 
     //close: onClose 
    }); 

    function onActivateWnd(e) { 
     console.log($(this)); 
    } 

Fill in Daten:

 function viewDt(e) { 
     var dItem = this.dataItem($(e.currentTarget).closest("tr")); 
     console.log(dItem); 
     myWindow.data("kendoWindow").center().open(); 
     //disabling input 
     $("#formViewDetail").find("#ClientNameViewDetail").prop('disabled', true); 
      $("#formViewDetail").find("#ClientOKPOViewDetail").prop('disabled', true); 
      $("#formViewDetail").find("#RegistrationDateViewDetail").prop('disabled', true); 
      $("#formViewDetail").find("#RemovalFromClientsDateViewDetail").prop('disabled', true); 
      //passing data to form input 
      $("#formViewDetail").find("#ClientNameViewDetail").val(dItem.ClientName); 
      $("#formViewDetail").find("#ClientOKPOViewDetail").val(dItem.ClientOKPO); 
      $("#formViewDetail").find("#RegistrationDateViewDetail").val(dItem.RegistrationDate); 
      $("#formViewDetail").find("#RemovalFromClientsDateViewDetail").val(dItem.RemovalFromClientsDate); 
    }  

Antwort

0

Die bereitgestellten Informationen legt nahe, dass das Fenster ein Datenelement aus dem Gitter hält, die angezeigt wird, wenn der Benutzer auf eine Schaltfläche innerhalb einer Rasterreihe klickt. In diesem Fall ist es viel einfacher, die gewünschte Information aus dem Datenelement des Gitters zu erhalten, anstatt den Inhalt des Fensters. Das Rasterdatenelement ist in der Variablen dItem verfügbar.

Wenn Sie die Kundeninformationen speichern möchten, nachdem der Benutzer sie bearbeitet hat, können Sie die integrierte Popup-Bearbeitung des Rasters und das save-Ereignis verwenden. Auf diese Weise enthält das Rasterdatenelement immer die neuesten Werte.

http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#events-save

http://demos.telerik.com/kendo-ui/grid/editing-popup

Es ist auch möglich Popup-Bearbeitung mit einer benutzerdefinierten Popup bearbeitet Formularvorlage zu verwenden:

http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#configuration-editable.template

Schließlich, um ein Datenelement mit dem bekommen Kendo UI-bezogene Sachen innerhalb, verwenden Sie toJSON(), um ein einfaches Objekt zu erhalten:

http://docs.telerik.com/kendo-ui/api/javascript/data/model#methods-toJSON

Verwandte Themen