2009-07-28 3 views
0

У меня есть флажок в Flex DataGrid, и когда я прокручиваю, другие строки случайно проверяются/не проверены.Флажок в Flex Datagrid Broken on Scrolling

После прочтения над: Creating a column of RadioButtons in Adobe Flex

ясно, что itemRenderers становятся переработаны, но проблема у меня с решением представлена ​​там движется информация о представлении в модели.

У кого-нибудь есть лучший способ его решения, который не заставляет меня помещать информацию для пользовательского интерфейса в мои классы моделей ActionScript? (в моем случае я конвертирую входящие данные XML в классы actionscript, и они привязаны к моему datagrid).

Спасибо за помощь.


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

Четан, отличная идея .. я пытался работать с этим почти целый день не повезло, хотя.

brd6644, хорошие мысли о том, разделяющей две модели классов .. я мог бы вернитесь назад и сделайте это позже.

ответ

1

Вы можете создать подкласс DataGrid, который внутренне сохраняет, какие строки отмечены или не отмечены (Array/Collection of Boolean), но у вас будет чертовски время, синхронизирующее с dataProvider когда он сортируется или фильтруется. Я полагаю, вы могли бы использовать словарь, который вводится объектом в каждом индексе dataProvider и оценивается с помощью логического значения, чтобы указать, выбрано ли оно. Это будет по крайней мере изолировать вас из вопросов сортировки/фильтрации. Это не будет работать, если у вас есть дубликаты ссылок в вашем DataProvider.

В качестве альтернативы вы можете создать подкласс класса модели ActionScript и добавить к нему свойство «selected», а затем написать некоторые простые утилиты для «преобразования» между ними. Таким образом, ваш просмотр работает только с классом «ViewModel» и другими слоями (особенно на стороне сервера), который касается только реального класса «Модель».

+0

Я второй второй идеей. Обычно я создаю базовый класс для всех классов моделей, которые назначаются сеткам, где я определяю boolean isChecked (среди нескольких других свойств, необходимых для моего дизайна). –

+0

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

0

Добавление к тому, что сказал cliff.meyers, есть третий вариант создания пользовательского класса IList, как описано в этом blog post от Alex Harui. Это довольно умно на самом деле, и он чище, поскольку он не требует подклассификации компонента или загрязнения ваших классов моделей.