У меня возникли проблемы с использованием jQuery UI's sortable
.jQuery UI Sortable и Table/Cell Size
У меня есть таблица, в которой строки следуют этой структуры:
<tr style="background-color: rgb(255, 192, 203);">
<input type="hidden" name="MyElement.index" autocomplete="off" value="748d4196-c12d-4c61-94f5-ad1a15eb279b">
<td style="background-color:red;">
<input type="hidden" id="MyElement_748d4196-c12d-4c61-94f5-ad1a15eb279b__ID" name="MyElement[748d4196-c12d-4c61-94f5-ad1a15eb279b].ID" />
<input type="hidden" ... />
<a href="..."> ... </a>
</td>
<td style="background-color:green;">
<a href="..."> ... </a>
</td>
<td style="text-align: right; vertical-align: middle; width: 12.5%; background-color: blue">
<a class="cancel-new-element" href="#" onclick="$(this).parent().parent().remove(); return false;" style="vertical-align: middle; margin-right: 15px;">
<img src="/Images/icon_remove.png" alt="Remove Row"></a>
</td>
</tr>
Первый скрыт input
(названный «MyElement.index») происходит от метода Html.BeginCollectionItem()
расширения, используемого для поддержки редактирования переменной длины список, подход, который я использовал несколько раз раньше и который можно увидеть here или here. В основном он добавляет префикс к именам и идентификаторам входов повторяющихся элементов (т. Е. Элементов в коллекции) в модели/viewmodel, поэтому привязка модели знает, какой вход принадлежит к вложенному объекту.
Я также настройки пользовательского помощника в моем jQuery UI sortable:
var myHelper = function (e, tr) {
var $originals = tr.children();
var $helper = tr.clone();
$helper.children().each(function (index) {
$(this).width($originals.eq(index).width())
});
return $helper;
};
, так что the td's in the row being dragged keep their widths.
Однако я не получаю желаемого эффекта, и вместо этого, когда я перетаскиваю строку, таблица немного сжимается, и я вижу, что ячейки перетаскиваемой строки на самом деле не сохраняют их точной ширины.
1) Это таблица (тр и фоны ТД были окрашены для лучшей визуализации):
2) В последней строке затягивается. Вы можете видеть, что размер таблицы уменьшается, а ширина td изменяется в перетаскиваемой строке. Розовый - это фон строки.
Если я не использую BeginCollectionItem
- что мне нужно для того, чтобы успешно опубликовать мой ViewModel - я не получаю один и тот же вопрос.
Я пробовал несколько модификаций на моей myHelper
функции. включая удаление скрытого input
с объекта $helper
без каких-либо результатов.