Ошибка Flex DataGrid / DataProvider? - PullRequest
1 голос
/ 23 ноября 2010

Создание сетки данных и поставщика данных, если поставщик данных содержит 2 одинаковых значения ({"A", "A", "B"}), когда вы наводите курсор мыши на любую из строк, содержащих "A", все строки, содержащие "А также будет выделен.

Кто-нибудь еще заметил эту проблему?

1 Ответ

2 голосов
/ 26 ноября 2010

Почему вы находитесь на правильном пути с сообщением, которым вы поделились http://jonathanbranam.net/solutions/datagrid-highlights-wrong-row. Причина, по которой это сбивает с толку flash / flex, заключается в том, что сетка данных использует равенство, чтобы определить, когда найдено совпадение для строки. Это может быть исправлено путем исправления структуры для использования строгого равенства (===), но лучший ответ на данный момент - сделать так, как предлагает этот пост, и обернуть ваши значения в объект, чтобы не было риска этой проблемы. Вы также увидите такое же поведение, если добавите несколько идентичных объектов, как показано в примере по ссылке. Вот рабочий пример, чтобы убедиться, что у вас есть то, что вам нужно.

<mx:DataGrid id="dataGrid" dataProvider="{gridData}" creationComplete="init()">
    <mx:columns>
        <mx:DataGridColumn dataField="title" headerText="Title" />
    </mx:columns>
</mx:DataGrid>

<mx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;

        [Bindable] private var gridData:ArrayCollection;    

        protected function init():void
        {
            gridData = new ArrayCollection();

            for(var i:uint = 0; i < 10; i++)
            {
                gridData.addItem({title: "This is an item"});   
            }

        }

    ]]>
</mx:Script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...