Модераторы: SoWa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы по ArrayCollection и DataGrid, ХЭЛП!!!! 
V
    Опции темы
belka
  Дата 1.12.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 17.9.2006

Репутация: нет
Всего: 3



Вопрос №1:
можно ли к ArrayCollection привязать XML-файл, и если да, то как??
Вопрос №2:
КАК???!!! как узнать число строк(записей) в таблице DataGrid, к которой привязан XML-файл (rowCount - не то..)

и да, может мне вообще что-то другое надо использовать для полноценной работы с массивом данных, содержащимся в XML-файле?
--------------------
Просто я живу на улице Ленина и меня зарубает время от времени...aka technogen007
PM MAIL   Вверх
AlDev
Дата 1.12.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 3
Всего: 50



юзать XMLListCollection как dataProvider, а не ArrayListCollection

Цитата(belka @  1.12.2006,  17:45 Найти цитируемый пост)
как узнать число строк(записей) в таблице DataGrid, к которой привязан XML-файл

выдрать из данных

Добавлено @ 12:54 
ПыСы
Передавать коллекции на прямую в принципе нет смысла, можно передавать и XMLList, все равно он поставит на него Биндинг (если объявляешь  в xml)

Добавлено @ 12:55 
ну и ессно сделает из него коллекцию.

Весь смысл коллекций в as3 - олавливание изменений и итераторы. 
PM MAIL WWW ICQ YIM MSN   Вверх
belka
Дата 1.12.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 17.9.2006

Репутация: нет
Всего: 3



AlDev, если не трудно, можно поподробнее про:
Цитата(AlDev @  1.12.2006,  12:53 Найти цитируемый пост)
выдрать из данных

 и про

Цитата(AlDev @  1.12.2006,  12:53 Найти цитируемый пост)
ну и ессно сделает из него коллекцию.


---
яж тока начанаю  разбираться..

Добавлено @ 13:13 
 smile 
--------------------
Просто я живу на улице Ленина и меня зарубает время от времени...aka technogen007
PM MAIL   Вверх
AlDev
Дата 1.12.2006, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 3
Всего: 50



Цитата(belka @  1.12.2006,  17:59 Найти цитируемый пост)
ну и ессно сделает из него коллекцию.

mx.controls.DataGrid:
Код

override public function set dataProvider(value:Object):void
    {
        if (itemEditorInstance)
            endEdit(DataGridEventReason.OTHER);

        super.dataProvider = value;
    }


а наследует он от mx.controls.dataGridClasses.DataGridBase, который наследует от mx.controls.listClasses.ListBase:
Код

public function set dataProvider(value:Object):void
    {
        if (collection)
        {
            collection.removeEventListener(CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler);
        }

        if (value is Array)
        {
            collection = new ArrayCollection(value as Array);
        }
        else if (value is ICollectionView)
        {
            collection = ICollectionView(value);
        }
        else if (value is IList)
        {
            collection = new ListCollectionView(IList(value));
        }
        else if (value is XMLList)
        {
            collection = new XMLListCollection(value as XMLList);
        }
        else if (value is XML)
        {
            var xl:XMLList = new XMLList();
            xl += value;
            collection = new XMLListCollection(xl);
        }
        else
        {
            // convert it to an array containing this one item
            var tmp:Array = [];
            if (value != null)
                tmp.push(value);
            collection = new ArrayCollection(tmp);
        }
        // get an iterator for the displaying rows.  The CollectionView's
        // main iterator is left unchanged so folks can use old DataSelector
        // methods if they want to
        iterator = collection.createCursor();
        collectionIterator = collection.createCursor(); //IViewCursor(collection);

        // trace("ListBase added change listener");
        collection.addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler, false, 0, true);

        clearSelectionData();

        var event:CollectionEvent = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
        event.kind = CollectionEventKind.RESET;
        collectionChangeHandler(event);
        dispatchEvent(event);

        itemsNeedMeasurement = true;
        invalidateProperties();
        invalidateSize();
        invalidateDisplayList();
    }


Отсюда видно, что можно передавать и XML, и XMLList и XMLListCollection как данные. вот собсно о чем я.
Что он сам делает коллекцию из данных.

Добавлено @ 13:40 
Цитата(belka @  1.12.2006,  17:59 Найти цитируемый пост)
AlDev, если не трудно, можно поподробнее про:
Цитата(AlDev @  1.12.2006,  12:53 Найти цитируемый пост)
выдрать из данных


trace (myDataGrid.dataProvider.length);

Это сообщение отредактировал(а) AlDev - 1.12.2006, 13:39
PM MAIL WWW ICQ YIM MSN   Вверх
belka
Дата 1.12.2006, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 17.9.2006

Репутация: нет
Всего: 3



ОГРОМНОЕ СПАСИБО!!!  smile 
--------------------
Просто я живу на улице Ленина и меня зарубает время от времени...aka technogen007
PM MAIL   Вверх
belka
Дата 1.12.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 17.9.2006

Репутация: нет
Всего: 3



AlDev, слушай, а если мне надо связать простой массив(Array) с результатом того, что вернет мне PHP-файл(а он вернет некую XML-структуру с данными), то что для этого надо делать??
можно реальный пример???
--------------------
Просто я живу на улице Ленина и меня зарубает время от времени...aka technogen007
PM MAIL   Вверх
AlDev
Дата 1.12.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 3
Всего: 50



т.е.? В каком виде php вернет?
PM MAIL WWW ICQ YIM MSN   Вверх
belka
Дата 1.12.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 17.9.2006

Репутация: нет
Всего: 3



ну типа того:
Код

<?php
Error_Reporting(E_ALL & ~E_NOTICE);
Define( "DATABASE_SERVER", "localhost" );
Define( "DATABASE_USERNAME", "root" );
Define( "DATABASE_PASSWORD", "");
Define( "DATABASE_NAME", "isq" );
//коннектимся к БД
$mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
mysql_select_db( DATABASE_NAME );
print ("Connected successfully");
// экранируем переменную для безопасности
function quote_smart($value)
{
// Stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
// экранируем, если не число
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
if($_GET["userlog"] AND $_GET["userpw"]): //авторизациЯ
    $Query = sprintf("SELECT * FROM users WHERE lg = %s", quote_smart($_GET["userlog"]));
    $Result = mysql_query( $Query );
    $row_count = mysql_num_rows($Result);
    if ($row_count == 0):
        echo('her! netu takogo logina!');
    else:
        $row = mysql_fetch_array($Result);
        if (quote_smart($_GET["userpw"]) != $row["pw"]):
            echo('her! netu takogo sochetania logina i parola!!!');
        else:
            $Return .= "<preved><gutlogin>".quote_smart($_GET["userlog"])."</gutlogin></preved>";
        endif;
    endif;
endif;
//конструктор ХМЛ
$Query = "SELECT * FROM users";
$Result = mysql_query( $Query );
$Return .= "<users>";
while ( $User = mysql_fetch_object( $Result ) )
{
$Return .= "<user><userid>".$User->ID_users."</userid><userlog>".$User->lg."</userlog><userpw>".$User->pw."</userpw></user>";     
}
$Return .= "</users>";
mysql_free_result( $Result );
print ($Return)
/*<users>
    <user>
        <userid>ID_users</userid>
        <userlog>lg</userlog>
        <userpw>pw</userpw>
    </user>
</users>*/
?>

так вот, я хочу чтоб все это перекачевало в массив  и потом уже как-то к массиву обращатся..
или хотябы типа того:
Код

...
<mx:HTTPService id="log" result="showName();" url="...logRequest.php" useProxy="false" method="GET">
    <mx:request xmlns="">
        <userlog>{lg.text}</userlog>
        <userpw>{pw.text}</userpw>
    </mx:request>
</mx:HTTPService>
...
public function showName():void{
ta_notes.text = log.lastResult.userlog.toString(); - это не работает..
}

--------------------
Просто я живу на улице Ленина и меня зарубает время от времени...aka technogen007
PM MAIL   Вверх
belka
Дата 2.12.2006, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 17.9.2006

Репутация: нет
Всего: 3



 smile   smile   smile   smile   smile   smile 
--------------------
Просто я живу на улице Ленина и меня зарубает время от времени...aka technogen007
PM MAIL   Вверх
AlDev
Дата 2.12.2006, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 3
Всего: 50



че нить типа
Код

<mx:Script>
<![CDATA[
    import flash.net.URLLoader;
    
    private function init():void
    {
        var urlLoader:URLLoader = new URLLoader();
        urlLoader.addEventListener(Event.COMPLETE,this.completeEventHandler);
        var urlRequest:URLRequest = new URLRequest();
        urlRequest.method = URLRequestMethod.GET;
        //set request params
        urlRequest.data.userlog = lg.text;
        urlRequest.data.userpw = pw.text;
        //load request
        urlLoader.load(new URLRequest('logRequest.php'));
    }
    
    private function completeEventHandler(event:Event):void
    {
        var urlLoader:URLLoader = URLLoader(event.target);
        var contentXML:XML = XML(urlLoader.data);
        for (var i:uint=0;i<contentXML.users.user.length();i++)
        {
            trace (contentXML.users.user[i].userid);
        }
    }
]]>
</mx:Script>

PM MAIL WWW ICQ YIM MSN   Вверх
belka
Дата 2.12.2006, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 17.9.2006

Репутация: нет
Всего: 3



AlDev, спасиба, попробую разобраться(правда без комментов тяжело..)
пс-а как мне увидеть окно output??(в которое trace() выводиться?  smile )
--------------------
Просто я живу на улице Ленина и меня зарубает время от времени...aka technogen007
PM MAIL   Вверх
AlDev
Дата 2.12.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 3
Всего: 50



Сделай не Run, а Debug smile
PM MAIL WWW ICQ YIM MSN   Вверх
belka
Дата 4.12.2006, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 17.9.2006

Репутация: нет
Всего: 3



--

Это сообщение отредактировал(а) belka - 4.12.2006, 09:55
--------------------
Просто я живу на улице Ленина и меня зарубает время от времени...aka technogen007
PM MAIL   Вверх
belka
Дата 4.12.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 17.9.2006

Репутация: нет
Всего: 3



[quote=AlDev, 2.12.2006,  08:39, post944834]
Код

<?xml version="1.0"?>
<!-- Simple example to demonstrate the WebService tag. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
    import flash.net.*;
    
    public function init():void
    {
        var urlLoader:URLLoader = new URLLoader();
        urlLoader.addEventListener(Event.COMPLETE,this.completeEventHandler);
        var urlRequest:URLRequest = new URLRequest();
        urlRequest.method = URLRequestMethod.GET;
        //set request params
        //urlRequest.data.userlog = lg.text;
        //urlRequest.data.userpw = pw.text;
        //load request
        urlLoader.load(new URLRequest('http://server.pmonline/kernel/logRequest.php'));
    }
    
    public function completeEventHandler(event:Event):void
    {
        var urlLoader:URLLoader = URLLoader(event.target);
        var contentXML:XML = XML(urlLoader.data);
        for (var i:uint=0;i<contentXML.users.user.length();i++)
        {
            trace (contentXML.users.user[i].userid);
        }
    }
]]>
</mx:Script>
    <mx:Button label="Button" click="init();"/>
    <mx:TextInput id="lg" text="123"/>
    <mx:TextInput id="pw" text="456"/>

</mx:Application>


этот код выдает такую ошибку:
 smile 
Код

TypeError: Error #1088: The markup in the document following the root element must be well-formed.
    at testarray/::completeEventHandler()
    at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/flash.net:URLLoader::onComplete()


а этот код:
Код

<?xml version="1.0"?>
<!-- Simple example to demonstrate the WebService tag. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
    import flash.net.*;
    
    public function init():void
    {
        var urlLoader:URLLoader = new URLLoader();
        urlLoader.addEventListener(Event.COMPLETE,this.completeEventHandler);
        var urlRequest:URLRequest = new URLRequest();
        urlRequest.method = URLRequestMethod.GET;
        //set request params
        urlRequest.data.userlog = lg.text;
        urlRequest.data.userpw = pw.text;
        //load request
        urlLoader.load(new URLRequest('http://server.pmonline/kernel/logRequest.php'));
    }
    
    public function completeEventHandler(event:Event):void
    {
        var urlLoader:URLLoader = URLLoader(event.target);
        var contentXML:XML = XML(urlLoader.data);
        for (var i:uint=0;i<contentXML.users.user.length();i++)
        {
            trace (contentXML.users.user[i].userid);
        }
    }
]]>
</mx:Script>
    <mx:Button label="Button" click="init();"/>
    <mx:TextInput id="lg" text="123"/>
    <mx:TextInput id="pw" text="456"/>
</mx:Application>

выдает такую ошибку:
Код

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at testarray/init()
    at testarray/___Button1_click()

что это значит???
 smile   smile   smile 
--------------------
Просто я живу на улице Ленина и меня зарубает время от времени...aka technogen007
PM MAIL   Вверх
AlDev
Дата 4.12.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 3
Всего: 50



Цитата(belka @  4.12.2006,  14:54 Найти цитируемый пост)
The markup in the document following the root element must be well-formed.


Не нормальный xml. Открой его в браузере. Посмотри какие ошибки у тебя выдются в xml.

Цитата(belka @  4.12.2006,  14:54 Найти цитируемый пост)
 Cannot access a property or method of a null object reference.

Объект какой-то не создан
PM MAIL WWW ICQ YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Flex | Следующая тема »


 




[ Время генерации скрипта: 0.1257 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.