У меня есть расширитель строк в Ext.NET, который определен на панели сетки с идентификатором MyGridPanel
, например:
x.RowExpander()
.Loader(x.ComponentLoader()
.Mode(LoadMode.Component)
.Url(Url.Action("GetExpandedView", "My"))
.Listeners(ls =>
{
ls.Expand.Handler = string.Format("My.onListRowExpand('{0}', {1}, this);",
Url.Action("GetMyView", "My"), Model.Id);
})
.Params(p =>
{
p.Add(new Parameter("id", Model.Id));
}))
, который при раскрытии вызывает функцию My.onListRowExpand
, которая выполняет некоторые функции, включая вызов этой функции с App.MyGridPanel
в качестве аргумента для panel
:
fitPanelHeight = function(panel) {
// Update the panel so that we don't cut off the rest of the grid
if (panel.getHeight() < frameElement.offsetHeight) {
panel.setHeight(frameElement.offsetHeight);
panel.update();
}
}
По сути, все, что делает этот метод, это расширяет контейнер, в который я передаю, так что когда я расширяю расширитель строк, ничто не обрезается. Это решает проблему с макетами HBox и расширителями строк, которая требовала от меня установки высоты для контейнеров. Мне действительно нужно сделать это только один раз, но я еще не понял, как это сделать.
Во всяком случае, когда я запускаю этот код в Internet Explorer 11, я сталкиваюсь с проблемой, из-за которой возникает исключение где-то в исходном коде Ext.JS, в котором говорится:
Невозможно получить свойство 'down' с неопределенной или нулевой ссылкой
Мне кажется, что это ошибка с Ext.JS / Ext.NET, потому что удаление вызова fitPanelHeight
исправляет исключение, и этот код выполняется без ошибок в Chrome. Итак, учитывая, что я не могу / не хочу исправлять этот фреймворк, может кто-нибудь предложить метод, с помощью которого я мог бы один раз установить высоту контейнера и таким образом избежать всей этой чепухи?
Для справки, я использую Ext.NET 4.1.0 и Ext.JS 6.0.2 с C # 6.