Как объединить ячейки в jqGrid 4.0

Я пытался "объединить" ячейки в jqGrid, то есть я хочу, чтобы ячейки для определенных строк имели colspan=2 (или более). До сих пор я смог заставить границы работать правильно, используя cellattr опция в модели столбца с чем-то вроде этого:

colModel = { name: "a", width=50, 
             cellattr: function(rowId, tv, rawObject, cm, rdata) {
                          if (rowId < 5) { return 'sytle="border-right:0px"'; } },

             name: "b", width=50, 
             cellattr: function(rowId, tv, rawObject, cm, rdata) {
                          if (rowId < 5) { return 'sytle="border-left:0px"'; } } };

Это просто удаляет границу для ячеек, которые я хочу объединить (a & b до строки 5). Но если я добавлю текст в любой из этих полей, выравнивание текста, очевидно, не будет работать должным образом, а текст просто отрезается, если он больше 50 пикселей.

Я мог бы сделать какую-то сумасшедшую вещь, где я делаю выравнивание по центру, разрезая весь текст пополам и добавляя каждую половину в столбцы "a" и "b" под правым выравниванием и левым выравниванием соответственно. Однако, кажется, должен быть лучший способ.

2 ответов


Я нахожу ваш вопрос очень интересным, поэтому +1 от меня.

мне кажется, что использование colspan=2 это то, что вам действительно нужно. Иметь одинаковое количество столбцов в строках, имеющих colspan=2 Я предлагаю скрыть следующий <td> элемент в строке:

{
    name:'a',index:'a', width:50,
    cellattr: function(rowId, tv, rawObject, cm, rdata) {
        if (Number(rowId) < 5) { return ' colspan=2' }
    }
},
{
    name:'b',index:'b', width:50,
    cellattr: function(rowId, tv, rawObject, cm, rdata) {
        if (Number(rowId) < 5) { return ' style="display:none;"' }
    }
}

Я тестировал реализацию всего несколько раз, но, похоже, работает:

enter image description here

демо вы можете увидеть в прямом эфире здесь.

обновлено: другого ответа показывает, как можно использовать rowspan атрибут в jqGrid.


похоже, что он не поддерживается прямо сейчас. Они говорят "ближайшее будущее".

http://www.trirand.net/forum/default.aspx?g=posts&t=1184