Flex, как сравнить данные из dataGrid dataField со строковым значением? - PullRequest
0 голосов
/ 16 февраля 2012

Вопрос кажется простым, однако он создает проблемы для меня.У меня есть dataGrid с двумя полями данных: peerID, name.Информация в сетке обновлялась динамически, когда новый пользователь присоединился к группе (я создаю чат).Мне нужно, чтобы эта информация о пользователе была удалена из сетки после ее отключения.

Итак, для "NetGroup.Neighbor.Disconnect": событие, которое я хочу сравнить со значением "event.info.peerID" со всеми значениями peerID в сетке и удалить информацию об отключенном пользователе.

Я пытаюсь использовать следующую конструкцию:

for (var i:uint, len:uint = txtDataArray.length; i < len; i++)
                        {
                        if (txtDataArray.source[i] == event.info.peerID)
                        {
                            txtDataArray.removeItemAt(i);
                        break;
                        }
                            }



<s:DataGrid id="txtData" x="11" y="59" width="238" height="164" alternatingRowColors="[ #67676767, #555555]" borderVisible="true" chromeColor="#555555" color="#CCCCCC" contentBackgroundColor="#555555" dataProvider="{callerns}" fontWeight="bold" requestedRowCount="4" rollOverColor="#08700D" selectionColor="#08700D" symbolColor="#CCCCCC">
        <s:columns>
            <s:ArrayList id="txtDataArray">
                <s:GridColumn dataField="name" headerText="USERS ONLINE"></s:GridColumn>
                <s:GridColumn dataField="peerID" headerText="USER ID" visible="true"></s:GridColumn>
            </s:ArrayList>
        </s:columns>
    </s:DataGrid>

Но это не работает вообще!

Я заметил, что конструкция txtDataArray.source [i] (или txtDataArray.getItemAt(i)) возвратил [object GridColumn] значение.Итак, у меня два вопроса: 1) Как получить значение точной ячейки?2) Как организованно удалить информацию после отключения пользователя?

Заранее спасибо!

1 Ответ

0 голосов
/ 16 февраля 2012

Почему вы используете txtDataArray.source[i]?
Вы можете написать так:

    for (var i:int; i < callerns.length; i++)
    {
        if (callerns[i].peerID == event.info.peerID)
        {
            callerns.removeItemAt(i);
            break;
        }
    }

или используйте for each, если хотите.
Кстати, мне нравится стиль вашей датагрид.

...