2016-04-11 20 views
2

In meiner modal Ich versuche, Datentabellen in dort zu setzen, das Problem, das ich habe, ist, dass die Breite nicht korrekt ist, sollte es die Breite der modal sein, aber es ist eigentlich wie dieseDatentabellen in Bootstrap modal Breite

enter image description here

Meine jQuery die Datentabellen

function getValidTags(){ 
     var ruleID = $('.ruleID').val(); 

     var table = $('.valid-tags').DataTable({ 
     "ajax": { 
      "url": "/ajax/getValidTags.php", 
      "type": "POST", 
      "data": { 
      ruleID: ruleID 
      }, 
     }, 
     "columnDefs": [{ 
     "targets": 2, 
     "render": function(data, type, full, meta){ 
      return '<button class="btn btn-default btn-sm" type="button">Manage</button> <button class="btn btn-danger btn-sm">Delete</button>'; 
     } 
     }]   
    }); 
} 

Mein HTML

01 Aufruf
<!-- Modal where you will be able to add new rule --> 
<div class="modal fade validation-list-modal" tabindex="-1" role="dialog" aria-labelledby="LargeModalLabel" aria-hidden="true" data-keyboard="false" data-backdrop="static"> 

    <div class="modal-dialog modal-wide"> 

     <div class="modal-content"> 

      <div class="modal-header modal-header-custom"> 
      <input class="ruleID" type="hidden"></input>  
       <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button> 
       <h4 class="modal-title modal-title-main">Create New Rule</h4> 
      </div> 

      <div class="modal-body"> 
      <div class="topBar">      
       <div> 
        <input type="text" class="validTags inputTextStyling"> 
       </div> 
      </div> 
       <table class="table table-striped table-condensed valid-tags"> 
        <thead> 
         <tr> 
          <th>Tag Name</th> 
          <th>Autofixes</th> 
          <th>Manage</th> 
         </tr> 
        </thead> 
        <tbody class="validTagsTable"> 
        </tbody>      
       </table>       
      </div> 
      <div class="modal-footer"> 

       <button type="button" class="btn btn-primary" id="saveValidTags">Save</button> 
       <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
      </div> 

     </div> 

    </div> 

</div> 
+0

Können wir Ihre HTML sehen? – Kypaz

+0

@Kypaz Gerade jetzt hinzugefügt. – Kieron606

+1

Haben Sie style = "width: 100%;" für dein

html Element? –

Antwort

2

Für den Anfang versuchen Sie folgende Klasse zu Ihrem Tabellenelement

.dataTableLayout { 
    table-layout:fixed; 
    width:100%; 
} 

Es wäre gut, wenn Sie eine Geige mit Dummy-Daten für die Lösung Ihres Problems Ihres Codes machen könnte.

+0

Dank Prakash & Francois, dachte nicht, dass dies das Problem wäre, aber es stellt sich heraus, dass es war. – Kieron606

+0

Wenn meine Antwort Ihre Bedürfnisse voll erfüllt, können Sie sie als Antwort akzeptieren, damit auch andere davon profitieren können. –

+0

Ich werde es als Antwort akzeptieren, ich muss zuerst 10 Minuten warten. – Kieron606

1

Ich glaube nicht, dass die angenommene Antwort die richtige Antwort ist. Es sollte überhaupt nicht notwendig sein, das CSS zu ändern. Dies könnte an anderen Stellen zu unerwarteten Problemen führen. Das Problem ist, dass der Container (das Modal) zu dem Zeitpunkt, zu dem die Datentabelle gerendert wird, nicht vollständig eingerichtet ist. Schauen Sie sich columns.adjust():

var table = $('#example').DataTable({ 
    initComplete: function() { 
    this.api().columns.adjust() 
    } 
    ... 
}) 

oder

$('.modal').on('shown.bs.modal', function() { 
    table.columns.adjust() 
}) 
+0

Das funktioniert nicht für mich. – Kieron606

4

ich diese geeignetere Lösung zu finden,

zuerst Ihre Tischbreite 100% wie diese machen:

<table width="100%" id="datatable"></table> 

dann initialisieren Ihr Tisch

$('#datatable').DataTable(); 

und das diese

$(document).on('shown.bs.modal', function (e) { 
     $.fn.dataTable.tables({visible: true, api: true}).columns.adjust(); 
}); 
+0

das funktioniert wie ein Charme! – josemaria

+0

Dank @josemaria, wenn Sie das hilfreich finden. :) –