7
votes

JQuery DataTable Overflows à Bootstrap Modal

J'ai une table dans un modal de bootstrap. Le contenu que je peuplé à l'intérieur des cellules de données est assez grand, et au lieu d'envelopper le texte pour s'adapter à la table à l'intérieur du modal, il déborde du modal, comme il est incapable de prendre la largeur modale et d'envelopper le texte.

Capture d'écran: strong> p>

Entrez l'image Description ici P>

J'ai essayé diverses solutions, telles que la spécification de l'enveloppement CSS ainsi que la spécification de la largeur de table (en% et px) et de régler la propriété de largeur sur la table (en% et px), mais il n'y a absolument aucun changement à la table. . Tout conseiller sur la manière de corriger ce problème serait grandement apprécié. P>

Extrait de code 1 (modal): strong> p>

function showQuestions(quiz_id)
{
$('#questions_quiz_id').val('quiz_id');
window.questionsTable.fnClearTable();
$.post('{{ url("getGameQuestions") }}', {quiz_id : quiz_id})
.done(function(data)
{
    if (typeof(data.error) != 'undefined')
    {
        $('#error-msg').html(data.error);
        $('#page-error').fadeIn(300).delay(2000).fadeOut(500);
    }
    else
    {
        for(var d in data)
        {
            var question = data[d]; 
            var active = (question.active == undefined || question.active == false) ? "Inactive" : "Active";

            var ai = window.questionsTable.fnAddData([
                question.code,
                question.title,
                question.instruction,
                question.extract,
                active,
                '<i class="icon-pencil" style="cursor:pointer; color:#E48A07;" title="Edit" onclick="setQuestion('+question.id+')"></i>'
            ]);
            var oSettings = window.questionsTable.fnSettings();
            var addedRow = oSettings.aoData[ai[0]].nTr;
            addedRow.cells.item(2).setAttribute('width','29%');
            addedRow.cells.item(4).className = "text-center";
            addedRow.cells.item(4).className = "text-center";
            addedRow.cells.item(5).className = "text-center";
        }
        $('#questionsModal').modal('show');
    }
});
}


0 commentaires

8 Réponses :


6
votes

Essayez de supprimer

Peut-on causer des largeurs réactives dans le modal à l'échec.

Vous pouvez également essayer de spécifier une max-largeur sur la table .

Cela pourrait être légèrement lié, bien que c'était un problème de bootstrap 2.3.2 et on dirait que vous utilisez 3.

http://www.bootply.com/88364


1 commentaires

@Adosi: C'était déjà défilé sur Y, mais ce n'était pas l'effet souhaité, la magnanimité voulait qu'il enveloppe le contenu de la table.



2
votes

Supprimer le

et vérifier. Je suis également expérimenté le même problème, après avoir enlevé la Div, je l'ai eu parfaitement.

0 commentaires

5
votes

Cette question est posée ici Datables ne devient pas sensible à la boîte de dialogue modale bootstrap3 Je suggérerais que vous activiez l'extension réactive de datables, fossé l'emballage et utilisez cet extrait de code. P>

//once the modal has been shown
$('#yourModal').on('shown.bs.modal', function() {
           //Get the datatable which has previously been initialized
            var dataTable= $('#yourResponsiveDataTableInModal').DataTable();
            //recalculate the dimensions
            dataTable.columns.adjust().responsive.recalc();

        });


2 commentaires

très agréable! Cela n'a pas fonctionné pour moi, cependant, je suis allumé l'option ScrollX . impair.


En outre, je l'ai travaillé avec juste .Columns.Adjust ();



0
votes
<div class="modal-body">
    <div class="row table-responsive">
        <div class="col-sm-12">
            <table id="example" class="table table-striped table-bordered table-hover">
                <thead>
                    <tr>
                        <th class="site_name">
                            Feedback
                        </th>
                        <th>
                            Ticket Id
                        </th>
                        <th>
                            Date of Creation
                        </th>
                        <th>
                            Classification
                        </th>
                        <th>
                            Topic
                        </th>
                        <th></th>
                    </tr>
                </thead>
            </table>
        </div>
    </div>
</div>

1 commentaires

Essayez la classe de conteneurs ci-dessus.



1
votes

Après avoir essayé tant de solutions, j'ai trouvé une solution.

Il suffit de mettre la table à l'intérieur d'un div et de définir le CSS à l'intérieur du code. P>

<div style="overflow:auto;">
<table>
      .....
</table>
</div>


0 commentaires

3
votes

Après avoir essayé tant de solutions, j'ai trouvé celui qui fonctionne pour moi!

Il suffit de mettre la table à l'intérieur d'un div et de définir le CSS à l'intérieur du code. P>

<div style="overflow:auto;">
<table>
      .....
</table>
</div>


0 commentaires

0
votes

initialiser le datatable comme ça Initialiser le jeu de données lors de l'ouverture du temps modal.First lorsque nous ouvrons le modal i == 1 second thime i == 2 SO SE DaTaTble ne peut pas réintitualiser encore et ne donne aucune boîte d'alerte comme DataTable déjà initalize xxx


2 commentaires

Cela peut être une solution à la question BT, ce serait une réponse bien meilleure si vous avez expliqué pourquoi il s'agit d'une solution et de son fonctionnement.


Initialiser le jeu de données lors de l'ouverture du temps modal.First lorsque nous ouvrons le modal i == 1 second thime i == 2 SO SE DaTaTble ne peut pas réinitialiser à nouveau et ne donne à nouveau pas une boîte d'alerte comme DataTable déjà initalisé.



0
votes

Il suffit d'insérer votre table à l'intérieur d'un DIV avec une classe "Table-sensible":

<div class="table-responsive">
  //Your table here
</div>


0 commentaires