jqgrid - как динамически добавлять / удалять определенные подсетки во время выполнения - PullRequest
1 голос
/ 05 января 2012

Я использую jqGrid 1.5.2, и у меня есть сетка в качестве подсетки, и родитель, и подсетка находятся в режиме редактирования ячейки без возможности сортировки.

В событии loadComplete родительской сетки, я успешноудалены некоторые подсетки, которые зависели от данных строки следующим образом:

loadComplete: function() {
  var dataIds = $('#mygrid1').jqGrid('getDataIDs');
  for (var i = 0;i < dataIds.length; i++) {
    var data = $("#mygrid1").jqGrid('getRowData', dataIds[i]);
    if (data[i].hasChild='N') {
       var grid = $("#mygrid1");
       $("#"+dataIds[i]+" td.sgcollapsed",grid[0]).unbind('click').html('');
    }
  }
}

Проблема в том, что

data [i] .hasChild может быть изменен пользователем народительская сетка, поэтому я хочу, чтобы подсетка снова могла быть расширена для строки.

Я пытался

$("#"+rowid+" td.sgcollapsed",grid[0]).bind('click').html('+');

связать событие click с элементом;однако, это не работает, даже знак «+» прикреплен обратно к столбцу подсетки, но событие щелчка не запускается ...

Может кто-нибудь дать мне какую-либо идею, решение или альтернативу для моего подхода,пожалуйста?Спасибо.

Обновлено 1/6/2012: После целодневных раскопок и «попыток и ошибок» я нашел способ приблизиться к успеху и кодировки, как показано ниже:

Сначала, перед тем как удалить привязку каждой строки, я попытался сохранить «данные и данные о событиях» с .clone (true, true) в массиве.

currChild[rowid] = $("#"+rowid+"td.sgcollapsed",grid[0]).clone(true,true);
$("#"+rowid+" td.sgcollapsed",grid[0]).unbind('click').html('');

Затем я заменяю клон обратно на элемент на

$("#"+rowid+" td.sgcollapsed",grid[0]).replaceWith(currChild[rowid]);

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

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

Я протестировал каждую строку, и они ведут себя так же, как и строка, потерявшая столбец и сдвинутая влево при третьем изменении.

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

1 Ответ

1 голос
/ 06 января 2012

Это прекрасное утро, и я хочу посвятить себя игровому времени, потому что я наконец справился с этим и добился успеха!

Последняя проблема - потеря столбца подсетки при третьем изменении в той же строке - была связана с тем, что я не сделал клон для элемента до того, как снова его связал (я сделал динамическое изменение в событии afterSaveCell) 1003 *

grid.collapseSubGridRow(rowid); //collapse subgrid before unbind 
currChild[rowid] = $("#"+rowid+"td.sgcollapsed",grid[0]).clone(true,true);
$("#"+rowid+" td.sgcollapsed",grid[0]).unbind('click').html('');

Итак, после того, как у меня есть клон перед развязкой, все идет хорошо и ожидаемо. Nice!

Кроме того, если у кого-нибудь есть обходной путь и улучшение, или вы видите какие-либо потенциальные проблемы и исправления, я буду рад услышать. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...