Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сортировка таблицы, при помощи js (https://javascript.ru/forum/misc/11597-sortirovka-tablicy-pri-pomoshhi-js.html)

Prizrak177 02.09.2010 09:44

Сортировка таблицы, при помощи js
 
Подскажите пожалуйста работающий способ, ну или вдруг кто сталкивался.

Требуется отсортировать таблицу, в которой имеются rowspan="2" и rowspan="3".

Всякие tablesorter и jqgrid не умеют работать с rowspan и полностью нарушают структуру таблицы.

Может кто подскажет в каком направлении копать хотябы, либо идею как - это можно реализовать.


Заранее спасибо.

Gvozd 02.09.2010 10:13

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

попробуйте написать сами с нуля, используя DOM.
сам факт перемещения строк таблицы реализуется нетрудно, если вы сможете ответив на предыдущие вопросы понять, как именно вам надо манипулировать таблицей

ksa 02.09.2010 10:23

Как вариант, таблицу можно превратить в одномерный массив если в ячейки с данными вставить ДИВы и дать им ИДшники типа

<div id='data_N'>...</div>


Где N это номер попорядку. Тогда все ровспаны и колспаны не смогут влиять на сортировку.

Цитата:

Сообщение от Gvozd
сам факт перемещения строк таблицы реализуется нетрудно

Таки может просто "двигать" сами данные меняя значение иннерХТМЛ?

Prizrak177 02.09.2010 10:24

Структура таблицы имеет похожий вид(на практике 25 строк и больше столбцов)

Необходима сортировка по 1 и 4 столбцу соответственно. Сортировка по 2 и 3 не столь важна. Соответственно сортироваться должны группы(1 и 10 в данном случае). Сортировка соответственно будет производиться пользователем при клике на "Название 1" или "Название 4"
<<table border="1">
	<thead>
		<tr>
			<th>
				Название 1
			</th>
			<th>
				Название 2
			</th>
			<th>
				Название 3
			</th>
			<th>
				Название 4
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td rowspan="2">
				Группа 1
			</td>
			<td>
				Элемент 2
			</td>
			<td>
				Элемент 3
			</td>
			<td rowspan="2">
				Элемент 4
			</td>	
		</tr>
		<tr>

			<td>
				Элемент 2.2
			</td>
			<td>
				Элемент 3.2
			</td>

		</tr>
<tr>
			<td rowspan="2">
				Группа 10
			</td>
			<td>
				Элемент 20
			</td>
			<td>
				Элемент 30
			</td>
			<td rowspan="2">
				Элемент 40
			</td>	
		</tr>
		<tr>

			<td>
				Элемент 20.2
			</td>
			<td>
				Элемент 30.2
			</td>

		</tr>
	</tbody>
</table>

ksa 02.09.2010 10:26

Prizrak177, т.е. дальше ты предлагаешь действовать нам? :)

inGray 02.09.2010 10:37

ksa,
ji, Каким бы алгоритмом Вы реализовали подобную сортировку?

ksa 02.09.2010 11:02

Цитата:

Сообщение от inGray
Каким бы алгоритмом Вы реализовали подобную сортировку?

Как вариант:
- выбрал бы данные из ДИВов
- запомнил бы номер/ИДшник ДИВов
Т.о. можно сделать массив типа

data[i][1]='значение'
data[i][2]='ИДшник_ДИВа'


- Далее отсортировал бы этот массив по "значению"
- Прошелся бы циклом по нему и менял бы значения i-того ДИВа с ИДшником "старого" ДИВа


А вот если сортировать целиком строки - то "нумеровать" нужно уже не <td>, а <tr>.
И запоминать придётся ИДшник всей строки. Тогда "двигать" строку целиком будет продуктивнее чем "переписывать" все её содержимое...

Prizrak177 02.09.2010 11:33

Я не предлагаю действовать Вам, я полностью описываю ситуацию.

Мне больше нравится возможность двигать строки. Правильно ли я понимаю, что я каждой строке присваиваю id, затем в зависимости от выбора столбца, сортирую эти строки по возрастанию?

Как то слишком просто....

ksa 02.09.2010 11:50

Цитата:

Сообщение от Prizrak177
Правильно ли я понимаю

Да идея примерно такая.
Но есть и "осложнения". :) При сортировке именно строки целиком ровспан нужно учитывать обязательно. Т.о. при сортировке придется двигать несколько строк сразу. Количество строк можно всегда узнать из атрибута ровспан у ячейки.
А уш запоминать их ИДшники или просто их количество это уже детали.

ksa 02.09.2010 11:52

Цитата:

Сообщение от Prizrak177
Как то слишком просто....

Так и задачка-то не "спутник на Юпитер запустить". :)


Часовой пояс GMT +3, время: 13:05.