Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Поиск по DataGrid, выделить несколько строк. (http://www.flasher.ru/forum/showthread.php?t=215662)

Atomnsq 08.10.2018 09:15

Поиск по DataGrid, выделить несколько строк.
 
Вложений: 1
Подскажите пожалуйста как можно реализовать поиск в DataGrid c возможностью выделения нескольких строк?
В примере показанном чуть ниже, реализован поиск по таблице, но если искомых значений несколько, то выделяется последняя искомая строчка.

Содержимое файла *.fla:

Код AS3:

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.MouseEvent;
import fl.controls.DataGrid;
import fl.data.DataProvider;
import fl.controls.dataGridClasses.DataGridColumn;
 
var urlLoader:URLLoader = new URLLoader();
 
//XML для вывода в таблицу
var DgXML:XML = new XML();
var DgXMLURL:URLRequest = new URLRequest("baseToDg.xml");
var DgLoader:URLLoader = new URLLoader(DgXMLURL);
DgLoader.addEventListener("complete", xmlToDgLoaded);
 
var aDp:DataProvider = new DataProvider(DgXML)  ;
aDg.dataProvider = aDp;
 
function xmlToDgLoaded(event:Event):void
{
        DgXML = XML(DgLoader.data);
        aDg.removeAllColumns();
        aDg.addColumn(new DataGridColumn("room"));       
        aDg.addColumn(new DataGridColumn("post"));                       
        aDg.addColumn(new DataGridColumn("fio"));       
        aDg.addColumn(new DataGridColumn("inPhone"));       
 
        aDg.columns[0].headerText = "Отдел";
        aDg.columns[1].headerText = "Должность";
        aDg.columns[2].headerText = "ФИО";
        aDg.columns[3].headerText = "Внутренний";
 
        aDg.columns[0].width = 150;
        aDg.columns[1].width = 150;
        aDg.columns[2].width = 250;
        aDg.columns[3].width = 100;
 
        updateDG();
}
 
function updateDG():void
{
        var converter:Array = [];
        for (var i:int = 0; i < DgXML.children().length(); i++)
        {
                converter.push(
                {
                        room:DgXML.user[i].@room,       
                        post:DgXML.user[i].@post,                                       
                        fio:DgXML.user[i].@fio,                       
                        inPhone:DgXML.user[i].@inPhone       
                });
        }
 
        aDg.dataProvider = new DataProvider(converter);
}
 
//Функция поиска//
btn.addEventListener(MouseEvent.CLICK, search);
function search(event:MouseEvent):void
{
        for (var i:int = 0; i <aDg.length; i ++)
        {
                var array:Array = [i];
                if ((aDg.getItemAt(i).fio == txt.text)||
                                (aDg.getItemAt(i).post == txt.text)||
                                        (aDg.getItemAt(i).room == txt.text)||
                                                (aDg.getItemAt(i).inPhone == txt.text)
                        )                       
                {                       
                        //выделяет только последнюю искомую запись если их несколько
                        aDg.selectedIndices  = array;
 
                        //выделяет несколько записей, но массив тут задан ручками
                        //aDg.selectedIndices  = [1,2,3];
                        trace("-------");               
                }               
        }       
}

Для выделения нескольких строк можно использовать следующий вариант:
//aDg.selectedIndices = [1,2,3];

В приложение есть архив с файлами *.fla и *.xml


Часовой пояс GMT +4, время: 12:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.