2012-06-21 14 views

risposta

12

Tutto ciò che dovete fare è dare una larghezza pixel-specifica alle celle della tabella. Come possiamo farlo senza conoscere il contenuto delle celle della tabella? semplice:

$(document).ready(function(){ 
    $('td').each(function(){ 
     $(this).css('width', $(this).width() +'px'); 
    }); 
}); 
+0

Grazie. Funziona perfettamente con Bootstrap, che non ha soluzioni chiare. – jaredstenquist

+2

L'approccio "migliore" è su [stackoverflow] (http://stackoverflow.com/a/1372954/1057527) – machineaddict

+2

Mi piace questo approccio. Meglio di quello "migliore". – NeoWang

36
.ui-sortable-helper { 
    display: table; 
} 
+0

Eeeek !!! facile e funzionante! Grazie! – goooseman

+0

+1 Ottimo per vedere una soluzione così semplice; Ho sofferto silenziosamente di questo problema a lungo. Anche se ho ancora alcune differenze di larghezza tra le file trascinate e il resto, questo è abbastanza vicino al punto magico. –

+0

È presente ovunque nei documenti? Non riesco a trovarlo. Ma voglio capirlo un po 'meglio. – Jarrod

-1

Nessuna delle soluzioni proposte ha funzionato per me.

Nel mio caso, l'altezza e la larghezza calcolate dall'utente di jQuery sono state arrotondate per eccesso e sostituiscono le quote calcolate automaticamente tramite l'attributo di stile.

Ecco cosa ho fatto per risolvere il problema, che ho trovato più elegante della maggior parte delle soluzioni offerte. (Anche se ha !important s in esso.)

.ui-sortable-helper { 
    width: auto !important; 
    height: auto !important; 
} 
8

mi sono imbattuto su una soluzione online.

var fixHelper = function(e, ui) { 
    ui.children().each(function() { 
    $(this).width($(this).width()); 
    }); 
    return ui; 
}; 
$(“#sort tbody”).sortable({ 
helper: fixHelper 
}).disableSelection(); 

Fix sortable tr from shrinking

+0

Impressionante, positivo dal mio lato. Grazie per quello. –

+0

Funziona perfettamente, grazie –

-1

src jquery-1.12.4.js

src jquery-ui.js

link rel jquery-ui.css

@model Servidor.CListados 
@{ 
    ViewBag.Title = "Index"; 
} 
@using (Html.BeginForm()) 
{ 
    <h2>Listados</h2> 
    <h2>@ViewBag.Mensaje</h2> 
    <table> 
      <tr> 
       <th>Campo1</th> 
       <th>Campo2</th> 
      </tr> 
     <tbody id="sortable"> 
      @foreach (var item in Model.ListaTabla1) 
      { 
       <tr > 
        <td>@Html.DisplayFor(modelItem => item.Campo1)</td> 
        <td>@Html.DisplayFor(modelItem => item.Campo2)</td> 
       </tr> 
      } 
     </tbody> 
    </table> 
    @*<ul id="sortable"> 
     @foreach (var item in Model.ListaTabla1) 
     { 
      <li>@Html.DisplayFor(modelItem => item.Campo1)</li> 
     } 
    </ul>*@ 
} 
    <script>$("#sortable").sortable();</script> 
Problemi correlati