Динамически установить максимальную высоту для rich: extendedDataTable - PullRequest
1 голос
/ 08 августа 2011

У меня проблемы с максимальной высотой в rich: extendedDataTable с использованием RichFaces 3.3.3 final.

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

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

Для созданиядинамическая высота:

     .rich-extdt-maindiv {
           height: auto !important;
      }

      .rich-extdt-maindiv, .extdt-innerdiv {
           position: relative !important;
      }

      .extdt-outerdiv {
           height: auto !important;
           overflow: visible !important;
      }

      .extdt-content {
           height: auto !important;
           max-height: 200px;
      }

(взято из http://community.jboss.org/wiki/ExtendedDataTableDynamicHeightAndJIRABugRF-7488)

Однако я хочу иметь возможность изменять максимальную высоту (несколько таблиц разного размера на одной странице).

Также, если я использую этот css, он переопределяет все другие высоты для любой другой расширенной таблицы данных.

В настоящее время я делаю следующее:

height="#{bean.listSize > 0 ? bean.listSize * 19 + 32 > 291 ? 291 : bean.listSize * 19 + 32 : 0}"

для высоты, где 19 - этовысота строки 32 - это высота заголовка, а 291 - максимальная высота, которую я хочу для таблицы.
Это не идеальное решение, так как я хочу решение, которое будет работать, когда отдельные размеры строк различаются.

Я не смог получить вызов JavaScript, работающий с f: verbatim или чем-то подобным (см. Как встроить и вызвать сценарий javascript на странице RichFaces / JSF ), но это не очень хорошее решение, потому чтоустановка максимальной высоты будет устанавливатьмаксимальная высота для каждой таблицы на странице.

У кого-нибудь есть лучшее решение?

Чем больше я пытаюсь понять это, тем больше я считаю, что extendeDataTable ограничен.Я не могу придумать решение этой проблемы, однако я заметил в этой программе таблицы с разным размером строк.Это функция, которая кажется разумной для реализации, но нет способа сделать это.

Последнее обновление:

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

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

Я добавил rich: toolTip (или мою собственную подсказку, потому что я начинаю сомневаться в richfaces), которая отображает остальное содержимое в ячейке при наведении курсора.Не лучшее решение, но оно работает для того, что нам нужно.

И это тот CSS, который вам нужен:

.rich-extdt-maindiv, .extdt-innerdiv {
     position: relative !important;
}

.extdt-outerdiv {
     overflow: visible !important;
}

Другой CSS в исходном файле был для управления высотой.Они преодолели это в том, что высота была динамичной и контролировали максимальную высоту с помощью одного тега.Это идеальное решение, если вам не нужна динамическая максимальная высота.

Другой вариант, если у вас только одна таблица на страницу, это использовать jQuery для изменения максимальной высоты для .extdt-content.Для меня это не вариант, потому что у нас их несколько на страницу.

Надеюсь, это поможет кому-то еще.

Оператор высоты не совместим с разными браузерами.

...