2016-05-25 17 views
1

Wie ich in der Frage title Ich muss ein Ereignis auslösen, sobald Shield-ui Gitter editierbare Zelle Textfeld zerstört. Konnte keine Lösung in ihrer Dokumentation finden. Jede Hilfe wäre nennenswert. Vielen Dank.Wie ein Ereignis auszulösen, wenn Schild-ui Rasterzelle Textfeld zerstört

Hier ist mein Code so weit ...

$("#allTransGrid").shieldGrid({ 
            dataSource: { 
             data: datad, 
             schema: { 
              fields: { 
               mbr_id: {path: "mbr_id", type: String}, 
               lon_id: {path: "lon_id", type: String}, 
               center_name: {path: "center_name", type: String}, 
               grp_name: {path: "grp_name", type: String}, 
               mbr_name: {path: "mbr_name", type: String}, 
               lon_amt: {path: "lon_amt", type: Number}, 
               lon_int_amt: {path: "lon_int_amt", type: Number}, 
               loan_total: {path: "loan_total", type: Number}, 
               ind_inst: {path: "ind_inst", type: Number}, 
               today_pay: {path: "today_pay", type: Number, nullable: false}, 
               lon_id_as: {path: "lon_id_as", type: Number} 
              } 
             } 
            }, 
            sorting: { 
             multiple: true 
            }, 
            paging: { 
             pageSize: 12, 
             pageLinksCount: 10 
            }, 
            selection: { 
             type: "row", 
             multiple: true, 
             toggle: false 
            }, 
            columns: [ 
             {field: "mbr_id", width: "100px", title: "Member ID"}, 
             {field: "lon_id", width: "100px", title: "Loan ID"}, 
             {field: "center_name", title: "Center Name", width: "100px"}, 
             {field: "grp_name", title: "Group Name", width: "70px"}, 
             {field: "mbr_name", title: "Member Name", width: "170px"}, 
             {field: "lon_amt", title: "Loan Amount", width: "100px"}, 
             {field: "lon_int_amt", title: "Interest", width: "100px"}, 
             {field: "loan_total", title: "Total", width: "80px"}, 
             {field: "ind_inst", title: "Installment Amount", width: "120px"}, 
             {field: "today_pay", title: "Today Payment"} 
            ], 
            events: { 
             editorCreating: function (e) { 
              if (e.field == "ind_inst") { 
               e.options = {enabled: false, max: 1000}; 
              } 
              if (e.field == "loan_total") { 
               e.options = {enabled: false, max: 500000}; 
              } 
              if (e.field == "lon_int_amt") { 
               e.options = {enabled: false, max: 100000}; 
              } 
              if (e.field == "lon_amt") { 
               e.options = {enabled: false, max: 100000}; 
              } 
              if (e.field == "mbr_name") { 
               e.options = {enabled: false}; 
              } 
              if (e.field == "grp_name") { 
               e.options = {enabled: false}; 
              } 
              if (e.field == "center_name") { 
               e.options = {enabled: false}; 
              } 
              if (e.field == "lon_id") { 
               e.options = {enabled: false}; 
              } 
              if (e.field == "mbr_id") { 
               e.options = {enabled: false}; 
              } 
              if (e.field == "today_pay") { 
               e.options = {max: 10000}; 
              } 
             }, 
             detailCreated: function (e) { 
              $.ajax({ 
               url: "PaymentCatcherGroupBy", 
               cache: false, 
               dataType: 'JSON', 
               data: {loan_id: e.item.lon_id_as, c_id: center_id}, 
               success: function (data) { 
                $("<div/>") 
                  .appendTo(e.detailCell) 
                  .shieldGrid({ 
                   dataSource: {data: data}, 
                   sorting: { 
                    multiple: true 
                   }, 
                   paging: { 
                    pageSize: 5 
                   }, 
                   columns: [ 
                    {field: "installment_num", title: "Week", editable: false}, 
                    {field: "installmentAmount", title: "Installment Amount", editable: false}, 
                    {field: "paidAmount", title: "Paid Amount", editable: false}, 
                    {field: "dueDate", title: "Date Paid", type: Date, editable: false} 
                   ], editing: {enabled: false} 
                  }); 
               }, error: function (jqXHR, textStatus, errorThrown) { 
                alert('error'); 
               } 
              }); 

             }, 
             command: function (e) { 
//selectionChanged doesnt work here.... 
              if (e.commandName == "selectionChanged") { 
               var toBeSelected = e.toBeSelected; 
               console.log(toBeSelected); 
               // e.cancel = true; 
              } 

             } 
            }, 
            editing: { 
             enabled: true, 
             event: "doubleclick", 
             type: "cell" 
            }, 
            scrolling: true, 
            height: 600 
           }); 

Nach dem Fokus verlor ich die Textbox brauche ein Ereignis auszulösen:

enter image description here

Antwort

3

Es gibt keine zerstören Ereignis, das mit einem der Editoren im Steuerelement verknüpft ist, wenn es sich im Bearbeitungsmodus befindet. Eine Option, abhängig von dem endgültigen Ziel, das Sie haben, wäre, das Befehlsereignis zu abonnieren: http://www.shieldui.com/documentation/grid/javascript/api/events/command , die beim Speichern ausgelöst werden soll, nach einer Bearbeitung. Wenn das keine Option ist, geben Sie bitte einige zusätzliche Informationen darüber an, was genau das Endergebnis ist, nach dem Sie suchen.

+0

Eigentlich muss ich ein Ereignis auslösen, direkt nachdem ich den Zellwert geändert habe. Nicht auf Zelle geklickt. So habe ich nach einem Ereignis gefragt, nachdem ich das Textfeld in der Zelle zerstört hatte. Das Ereignis 'selectionChanged' ist in diesem Fall nicht nützlich. –

+0

Ich habe meine Frage mit Codebeispiel aktualisiert ... –

+1

Zu diesem Zweck möchten Sie möglicherweise einen benutzerdefinierten Editor erstellen und alle Tracking/Notification behandeln, indem Sie die Client-Ereignisse des Eingabesteuerelements abonnieren. Dies wird im Folgenden gezeigt: http://jsbin.com/yujujoteco/edit?html,output –