Flexigrid + IE9 высота: авто - PullRequest
       17

Flexigrid + IE9 высота: авто

0 голосов
/ 28 апреля 2011

Проблема очень элементарна.

Если вы перейдете на http://flexigrid.info/ с IE9 и исследуете раздел * пример 2 , иразмер столбцов изменяется над видимым местом, что активирует горизонтальную полосу прокрутки.И вы парете по рядам, вы испытываете рост размера Flexigrid.Я не испытываю IE7 и IE8, только IE9.Эта проблема имеет высоту: автоматическая настройка.Я еще не нашел решения.Пожалуйста, помогите мне!

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

На самом деле, решение, опубликованное @Szenti, будет работать только для 1 flexigrid на странице, если их несколько, оно будет принимать только значение высоты первого bDiv, которое оно найдет, и применять исправление ко всем.

Моя пересмотренная версия, я думаю, будет применяться к ситуациям, когда на странице одновременно много флексигрид.

ie9Fix: function() {
            var bDivH = $(this.bDiv).height();
            var bDivTH = $('table', this.bDiv).height();
            if(bDivH != bDivTH && p.height=='auto') {
               $(".bDiv").css({height: bDivTH + 18});
            }
        },
1 голос
/ 10 февраля 2012

У меня была такая же проблема. Спасибо @Szenti за ответ, однако, как только это было сделано, у меня возникла проблема изменения размера flexigrid, когда результаты в таблице были восстановлены с помощью AJAX. Это произошло в последних версиях Chrome, Firefox и IE7 / 8.

Итак, я добавил (некоторые скажут, грязный) браузер, снифф в микс.

Global var:

var ie9 = false;
if ($.browser.msie && parseInt($.browser.version, 10) == 9) {
    ie9 = true;
}

Тогда, где вызывается метод @ Szanti, я просто обертываю его:

if (ie9) {
 this.ie9Fix();
}

Теперь работает угощение во всех браузерах.

0 голосов
/ 29 апреля 2011

Решение:

Вам необходимо отредактировать flexigrid js.Добавьте к данному объекту следующее:

ie9Fix: function() {
if($(".bDiv").height() != $(".bDiv table").height() && p.height=='auto') {
   $(".bDiv").css({height: $(".bDiv table").height() + 18});
}
},

Вы должны вызвать функцию ie9Fix в 2 местах

  • В последней строке функции g.dragEnd () (this.ie9Fix ();)
  • В g.addRowProp () вы должны написать новое событие:

    .mouseleave (function () {g.ie9Fix ();})

Вот и все!

...