2014-09-26 2 views
2

У меня есть модель, вид и контроллер, которые автоматически преобразуют DataTable в jQGrid. Он работает как ожидалось, если только DataTable не имеет только 2 столбца. Данные выводятся, как ожидалось, но Pager_Left вынуждены иметь ширину 20 пикселей независимо от размера экрана или сетки.jQGrid Pager_left ширина слишком маленькая с несколькими столбцами

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

Когда я пошагового, то после этой строки кода:

jQuery("#" + "@Model.GridId").jqGrid('navGrid', '#' + '@Model.PagerId', { edit: false, add: false, del: false, refresh: false }, {}, {}, {}, { multipleSearch: true, multipleGroup: false }); 

что Pager_Left сжимается. Если я прокомментирую код, он отобразится так, как ожидалось, но тогда я не получаю свои пользовательские кнопки в пейджере.

Точный же код с более широкой таблицей дает ожидаемые результаты. Я думаю, что jQGrid имеет некоторую «функцию», которая пытается настроить пейджер, когда не так много столбцов, но я не знаю, как отключить его.

Я могу это сделать:

$('#' + '@Model.PagerId' + '_left').css('width', ''); 

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

Как отключить «функцию» или переопределить его, используя соответствующие настройки jQGrid?

+0

Главный вопрос: Я использую взломать с удалением свойства 'width' на левом пейджере тоже в ситуациях, когда начальная ширина сетки слишком мала. Поиск по местам кода, который создает встроенный стиль CSS? Это побочный эффект, а не «особенность». В jqGrid нет специального варианта для отключения функции. Если вы хотите опубликовать отчет об ошибке, вы должны сделать это на [trirand forum] (http://www.trirand.com/blog/?page_id=393/bugs). Только Tony, единственный официальный разработчик jqGrid, имеет право изменить исходный код jqGrid. – Oleg

+0

Мой «главный вопрос» заключался в том, как это сделать без взлома. Тем не менее, похоже, что взлом - мой лучший вариант. – davids

+1

Есть два места кода jqGrid, где вы делаете какое-то «обнаружение функции». См. [Здесь] (https://github.com/tonytomov/jqGrid/blob/v4.6.0/js/grid.formedit.js#L1950-L1961) (и особенно [строка] (https://github.com /tonytomov/jqGrid/blob/v4.6.0/js/grid.formedit.js#L1957)) и [здесь] (https://github.com/tonytomov/jqGrid/blob/v4.6.0/js/grid.base .js # L2139-L2147)). В результате 'width' будет установлен в том случае, если он не нужен. Я нахожу удаление стиля 'width' на левом пейджере без какого-либо побочного эффекта. Поэтому я считаю это достаточно хорошим. – Oleg

ответ

2

Есть два места кода jqGrid, где вы делаете какое-то «обнаружение функции». См. here (и особенно the line‌​) и here). В результате width будет установлен в случае, когда он не нужен.

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

Смежные вопросы