0

Ich habe eine KendoDropDown-Liste als eine Zelle in meinem Raster. Ich rufe die kendDropDownList mit dem Editor-Befehl von kendo grid ("editor") auf. Ich muss den ausgewählten Wert der ausgewählten Zeile als Parameter an kendoDropDownList übergeben, damit der Server nur mit der gefilterten Liste als meine kendoDropDownList antwortet. Bitte beachten Sie mein unten BeispielFehler in Kendo-Grid - grid.select ist keine Funktion warum?

      var grid = $("#grid").kendoGrid({ 
        dataSource: dataSource, 
        pageable: true, 
        columnMenu:true, 
        filterable:true, 
        height: 550, 
        reorderable: true, 
      columnReorder: function(e) { 
         console.log(e.column.field, e.newIndex, e.oldIndex); 
         }, 
        toolbar: ["create","excel","save", "cancel" , { template: kendo.template($("#template").html()) } , { template: kendo.template($("#clearFilterTemplate").html()) } , { name: "create", text: "Add New Employee" }], 
        excel: { 
          fileName: "Kendo UI Grid Export.xlsx", 
          proxyURL: "excelExport", 
          filterable: true, 
          allPages: true 
         },       
        editable: "inline" , //editable: true, 
        columns: [ 
           { field: "fileNo" , title:"File No" , width: 80 }, 
           { field: "jobNo" , title:"Job No" , width: 80 }, 
           { field: "discipline" , title:"Discipline" , width: 80 }, 
           { field: "moduleNo" ,title:"Module", width: 100}, 
           { field: "description",title:"Title",editor: descriptionDropDownEditor, width: 150}, 
           { field: "documentNo",title:"Document No", width: 150 }, 
           { field: "remarks",title:"Remarks" , width: 150 } , 
           { command: ["edit","destroy"], title: " ", width: "250px" } 

          ] 


       }); 


       function descriptionDropDownEditor(container, options) { 

       // here is the error grid.select is not a function why ? 
       var selectedItem = grid.dataItem(grid.select()); 
       var selectedJobNo = selectedItem.jobNo ; 
       alert("selectedJobNo :"+selectedJobNo ); 


       $('<input required name="' + options.field + '"/>') 
        .appendTo(container) 
        .kendoDropDownList({ 
         autoBind: false, 
         dataTextField: "text", 
         dataValueField: "value", 
         filter: "contains", 
         dataSource: { 
          dataType: "json",         
          transport: { 
           // I need to pass the selected jobNo in order to get the only aprropriate descrption for that jobNo 
           // each row job has description and I don't want to show all the description for all jobs , I need only for that row jobNo 

           read: "getDescriptionForEachDocumentIndex?selectedJobNo"+selectedJobNo 
          } 
         } 
          }); 
       } 

einmal die Reihe der Tabelle im Bearbeitungsmodus Ich brauche die ausgewählte Zeile jobNo zu kendoDropDownList passieren, um mit nur releated Beschreibung zu reagieren wieder für diesen jobNo. Das Problem ist, dass ich Gitter im Bearbeitungsmodus nicht aufrufen kann und die Funktion grid.select() verwende. Was ist in diesem Fall zu tun?

Antwort

1

Nun, das ist einfach. Der zweite Parameter Ihrer Editor-Funktion hat eine Eigenschaft namens Modell, die das dataItem der aktuellen Zeile Benutzer bearbeitet. Also in Ihrem Fall vermuten ich dies funktionieren würde:

function descriptionDropDownEditor(container, options) { 
    var selectedItem = options.model; 

Aber, um Ihre Frage zu beantworten, können Sie nicht auf die select() Methode, weil grid kein Kendo Grid-Objekt ist, ist es in der Tat das #grid Element. es innerhalb der Funktion

$("#grid").kendoGrid({ ... }).data("kendoGrid"); 

Oder rufen: Entweder .data("kendoGrid") am Ende der Widgets Initialisierung hinzufügen

function descriptionDropDownEditor(container, options) { 
    var gridWidget = $(grid).data("kendoGrid"); 
    var selectedItem = gridWidget.dataItem(gridWidget.select()); 
+0

dank DontVoteMeDown, Sie haben meine Frage beantwortet mit Ich habe zwei kleine Fragen –

+0

@AliAlawi vor allem, bitte posten Sie nicht Antworten mit mehr Fragen, das ist nicht richtig. Schreibe stattdessen Kommentare in meine Antworten. Nun, ich weiß nicht, warum Sie immer noch den Fehler bekommen, denn was ich vorgeschlagen habe, ist in der Dokumentation. Du hast keine zwei Elemente mit 'id = grid', oder? Über das 'options.model' habe ich es selbst herausgefunden. Wenn ich auf ein Ereignis eines Widgets stoße, das ich nicht wirklich kenne, benutze ich einfach 'console.log (Argumente)' innerhalb des Ereignisses, um zu sehen, was es mir gibt. – DontVoteMeDown

Verwandte Themen