Добавление удаления столбцов в Datagrid в Flex с состояниями

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

Последовательность шагов для получения сообщения об ошибке:

  1. Вы выбираете диапазон дат, например: с 01.01.2013 по 31.01.2013
  2. Вы нажимаете кнопку генерации (приложение меняет currentState = "EmployeeList", и все в порядке)
  3. Нажимаешь кнопку назад (возвращаешься в исходное состояние и все ок)
  4. Если вы измените диапазон дат, в котором больше дней, чем до диапазона дат, тогда все в порядке.
  5. Если вы измените диапазон дат, в котором меньше дней, чем до диапазона дат, будет достигнута следующая ошибка

    TypeError: ошибка № 1009: невозможно получить доступ к свойству или методу ссылки на нулевой объект. в mx.controls.dataGridClasses :: DataGridBase / http://www.adobe.com/2006/flex/mx/internal::columnHeaderWordWrap() в mx.controls.dataGridClasses :: DataGridItemRenderer / validateProperties () в mx.managers :: LayoutManager / validateClient () в mx.controls.dataGridClasses :: DataGridHeader / updateDisplayList () в mx.core :: UIComponent / validateDisplayList () в mx.managers :: LayoutManager / validateDisplayList () в mx.managers :: LayoutManager / doPhasedInstantiation () в mx.managers :: LayouthasedInstantiation () в mx.managers :: LayouthasedManager / doti )

и если вы погуглите, то некоторые результаты потребуются, чтобы посетить сайт сообщений об ошибках apache

https://issues.apache.org/jira/browse/FLEX-22108

И больше нет ...

Но я нашел как это решить!


person Yury Euceda    schedule 17.09.2013    source источник


Ответы (1)


Чтобы решить эту проблему, в первую очередь я много гуглил, и, похоже, никто не получил эту ошибку, и я обнаружил, что это ошибка Flex, о которой сообщалось в Apache. И я анализировал исходный код из DataGrid.as и DataGridColumn.as, чтобы подумать о возможном решении, и я проводил несколько тестов, но ничего не работало.

Что сделал и надеюсь будет кому-то полезен

при нажатии кнопки «Назад» внутри backbutton_clickEventLister () и до currentState = ""; Я просто установил массив столбцов в новый массив ();

protected function bttnBack_clickEventHandler(event:Event) : void {
    // This code line solved it
    dtGrdWorkedHours.columns = new Array();
    // Make sure of code it before state change stament
    currentState = "";
}
person Yury Euceda    schedule 17.09.2013
comment
Ах да, этот маленький засранец. Также убедитесь, что для параметра dataProvider установлено значение new ArrayCollection () (или любой пустой IList) вместо null, если вы хотите сбросить данные, иначе последуют аналогичные махинации. - person drkstr101; 19.09.2013