2017-10-22 2 views
0

Ich verwende Bootstrap-Tabelle mit X-Editable-Plugin. Die Tabelle hat 3 Felder, von denen nur eines bearbeitet werden kann. Ich muss an das Server-Skript alle Felder und nicht nur das bearbeitbare Feld senden. Der Code ich verwende, ist folgende:Senden Sie alle Felder Werte an Server mit Bootstrap-Tabelle editierbares Plugin

$('#table-result').bootstrapTable({ 
columns: [ 
    [{ 
     field: 'Network Domain', 
     title: 'Network domain' 
     }, { 
     field: 'Service Provider', 
     title: 'Service provider' 
     }, { 
     field: 'Category', 
     title: 'Category', 
     editable: { 
     url: ajaxurl, 
     ajaxOptions: { 
      type: 'get', 
      dataType: 'json' 
     }, 
     success: function(response, newValue) { 
      /* some code here */ 
     }, 
     type: 'select', 
     title: 'Select category', 
     placement: 'left', 
     emptytext: 'empty text', 
     source: [ 
      {value: 'cat1', text: 'cat1'}, 
      {value: 'cat2', text: 'cat2'} 
     ] 
     }], 
}); 

Und dies die HTML

<table class="table table-striped table-bordered table-hover" 
    id="table-result" 
    data-height="800" 
    data-page-list="[5, 10, 20, 50, 100, 200]" 
    data-pagination="true" 
    data-page-number="1" 
    data-page-size="10" 
    data-search="false" 
    data-side-pagination="client" 
    data-show-columns="true" 
    data-show-export="true" 
    data-sort-name="Category" 
    data-sort-order="desc" 
    data-toolbar="#toolbar" 
    > 
</table> 

Tabellendaten von Ajax kommen (kein Problem: es funktioniert).

Ich muss alle Felder, und nicht nur das Kategoriefeld, an das Ajax-Skript senden, das die Änderungen an dem ausgewählten Kategoriefeld ausführt. Ich kann kein PK für jede Tabellenzeile definieren und verwenden, da die Aktion, die ich ausführen muss, wenn ich auf das bearbeitbare Feld klicke, alle Felder benötigt. Ich dachte, ich benutze die 'params' Optionen von x-editable, aber ich weiß nicht, wie ich die aktuellen Werte der Zeile, die ich gerade bearbeite, ermitteln kann.

Haben Sie Vorschläge? TIA

P.S. Entschuldigung, wenn ich die Frage nicht in einer "verständlichen" Form erklären kann, aber Englisch ist nicht meine primäre Sprache.

Antwort

1

Ok. Ich habe das Problem gelöst.

den Ajax-Teil von editierbaren Entfernt:

{ 
    url: ajaxurl, 
    ajaxOptions: { 
    type: 'get', 
    dataType: 'json' 
}, 
success: function(response, newValue) { 
    /* some code here */ 
}, 

und als Ereignis später auf dem Code hinzugefügt:

$('#table-result').on('editable-save.bs.table', function(e, field, row, oldValue, $el){ 
    //row.oldCategory = oldValue; 
    //console.log(row); 
    $.ajax({ 
     data: { 
      'action': 'update', 
      'Network Domain': row["Network Domain"], 
      'Service Provider': row["Service Provider"], 
      'Category': row["Category"], 
      'oldCategory': oldValue 
     }, 
     dataType: 'json', 
     url: '$ajax_action_url' 
    }).done(function(response) { 
     // If successful 
     console.log(response); 
    }).fail(function(jqXHR, textStatus, errorThrown) { 
     // If fail 
     console.log(textStatus + ': ' + errorThrown); 
    }); 
}); 
Verwandte Themen