Столбец таблицы Изменять размер/Перетаскивать 'n', Заглядывающего jQuery

Я ищу способ реализовать и изменение размеров и перетащить отбрасывание 'n' для столбцов (не строки) в предопределенной таблице с помощью jQuery. Я сделал немного поиска с помощью Google и действительно не нашел ничего, что отвечает всем требованиям, поскольку многие требуют, чтобы Вы по существу восстановили свою таблицу с помощью jQuery. Я просто хочу включить эту функциональность, не иметь мою всю структуру таблицы, продиктованную третьим лицом.

Кто-либо знает о каких-либо плагинах, которые могли бы помочь мне сделать это, и если не там какие-либо Гуру jQuery там, которые уже решили эту проблему?

5
задан Brian Tompsett - 汤莱恩 27 October 2016 в 19:35
поделиться

1 ответ

Я так понимаю, вас не интересует один из существующих плагинов для гридов, таких как jqGrid? Я бы предложил посмотреть на их реализацию, чтобы получить представление о том, как они перетаскивают колонки.

У меня нет конкретного кода для этого, но вот мои первоначальные мысли о том, как подойти к проблеме.

Изменение размеров колонок

Я бы использовал css table-layout: fixed с тегами для определения ширины колонок. Таким образом, вашему коду jquery нужно будет изменить значение ширины только в одном месте, и все ячейки в колонке изменят ширину.

<table width="100%" cellspacing="0"> 
    <col width="25%"> 
    <col width="25%"> 
    <col width="25%"> 
    <col width="25%"> 
    <tr>...</tr>
</table> 

Используйте CSS для размещения невидимого узкого div справа от каждой ячейки заголовка: Title

. Этот
станет вашей ручкой изменения размера, и вы захотите разместить на нем CSS для изменения курсора мыши при наведении. Можно даже использовать CSS, чтобы немного сдвинуть его вправо, чтобы он перекрывал границу между колонками.

Затем примените jQuery UI поведение перетаскивания к этому div. Когда div перетаскивается, обновите ширину соответствующим образом. Способ изменения размера будет зависеть от ваших потребностей и, вероятно, потребует немного математических вычислений.

В качестве альтернативы, когда невидимый div перетаскивается, вы можете преобразовать его в абсолютно позиционированный узкий div, который увеличивается до высоты таблицы. Вам нужно будет перемещать его при перетаскивании мыши и сделать его видимым, чтобы указать, где вы изменяете размер столбцов. Затем, после изменения размера, вы пересчитаете размеры и примените их, измените высоту обратно, чтобы она помещалась только в , и сделайте его снова невидимым.

Перетаскивание столбцов

Это может быть сложнее. Я бы начал с применения перетаскиваемого поведения к элементам . Элементы

, описанные выше, внутри элементов могут иметь поведение перетаскивания. Таким образом, вы могли бы перетащить любой столбец на один из этих div'ов и опустить его на них. Когда колонка перетаскивается поверх div, div должен стать видимым, и, возможно, высота колонки.

Как только пользователь перетащит заголовок столбца на один из этих div, вам нужно будет пройтись по каждой строке таблицы и переместить соответствующий в нужное место. Не забудьте также переместить соответствующие и .

Надеюсь, это поможет вам в работе. Я уверен, что где-то есть подобные примеры, если хорошенько поискать. Но большинство элементов управления сеткой имеют гораздо больше возможностей, чем я мог бы реально использовать, а вы, похоже, предпочитаете все упростить.

UPDATE

Я просто сделал быстрый поиск в Google и нашел этот плагин. Я еще не смотрел исходники, но судя по демонстрации, похоже, что он использует подход, схожий с тем, что я предлагаю. Похоже, он выполняет свою работу, но, на мой взгляд, выглядит не очень красиво. Полоса изменения размера не выстраивается там, где вы ожидаете, и тому подобное. Но это может помочь.

5
ответ дан 14 December 2019 в 19:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: