jqGrid-есть ли способ всегда отображать вертикальную полосу прокрутки?

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

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

Я попытался добавить следующий CSS в сетку .ui-jqgrid-bdiv div:

overflow-y: scroll;

используя следующий jQuery (код уродливый, я знаю):

$("#mygrid").closest(".ui-jqgrid-bdiv").attr("style",
$("#mygrid").closest(".ui-jqgrid-bdiv").attr("style") + " overflow-y: scroll; ");

это отлично работает в Firefox и Chrome, но в IE сетка никогда не отображает полосу прокрутки (независимо от того, сколько строк я добавляю, они добавляются в нижнюю часть сетки, и вертикальная полоса прокрутки никогда не появляется).

любая помощь приветствуется!

4 ответов


overflow-y является CSS3, и он еще не полностью поддерживается IE (вздох...)

Итак, я думаю, что единственные 2 CSS вещи, которые вы можете сделать с этим, без какой-либо другой разметки, это использовать либо overflow: auto (что позволит браузеру решить) или overflow: scroll, что заставит как вертикальные, так и горизонтальные полосы прокрутки.

обходной путь может заключаться в том, чтобы обернуть всю сетку в больший div с минимальной высотой, поэтому вы устанавливаете это равным окну браузеров + 1px. Что будет вертикальная полоса прокрутки.

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

.the-wrapper{
  height: auto !important; /* for real browsers*/
  height: 601px;           /* IE6 will use this a min-height. Use any height you need - you can even set this using JavaScript depending on the browser window height */
  min-height: 601px;       /* for real browsers - same value as height */
}

конечно, это добавит некоторое пространство под сетками. Добро пожаловать на борт!


вы установили свойство height в сетке? IE может стать сварливым с полосами прокрутки, если высота не установлена.


есть scrollOffset опция для jqGrid.

установите его на ноль, и пустое пространство исчезнет.


вы пробовали jqGrid 3.6 beta, у него много новых функций, таких как: истинные строки прокрутки Я думаю, что это решение для вас.

демонстрация новых функций: http://www.trirand.com/jqgrid/jqgrid36/jqgrid.html

Alsow есть новый способ добавлено: gridResize который может изменять размер сетки. http://github.com/tonytomov/jqGrid/commit/a008ebf7b8ad684b21e51f21eed4301b82bc66f2