Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Добавление динамических элементов в dataProvider (http://www.flasher.ru/forum/showthread.php?t=94569)

DarkWark 15.04.2007 19:33

Добавление динамических элементов в dataProvider
 
Есть исходные данные:
Код:

$name = Array(name1,name2);
$value = Array(value1,value2);

Нужно сделать следующее добавление в массив:
Код:

$dataProvider = Array({$name[i]:$value[i]}); // i=0,1
Чтобы в итоге получить:
Код:

$dataProvider = Array({name1:value1},{name2:value2})

etc 15.04.2007 19:38

Читайте про метод push у Array.

DarkWark 15.04.2007 19:40

Читали =)) Ругается он:
Код:

for(k=0;k<id.length;k++){
myData.push({id[k]:val[k]})
}


etc 15.04.2007 20:01

И правильно делает, внутри push неверный синтаксис. Самостоятельно додумаем?

DarkWark 15.04.2007 20:34

Не получается =(

etc 15.04.2007 20:48

Код:

for(k=0;k<id.length;k++){
myData.push({id:k,val:id[k]});
}

Я думаю, нужно было это.

Да, и надо пользоваться new Array, а не функцией Array, потому как это пережиток прошлого.

DarkWark 15.04.2007 21:14

Хм, не получается использовать myData в виде dataProvider'a =(

etc 15.04.2007 21:24

«не получается» — не ответ. Приводим полный код.

DarkWark 15.04.2007 21:26

ActionScript:
Код:

System.useCodepage = true;
var myData:Array = new Array();
var data_xml:XML = new XML();
data_xml.ignoreWhite = true;
data_xml.onLoad = function(success) {
        if (success) {
                //database=>row=>columns:
                for (i=0; i<this.firstChild.childNodes.length; i++) {
                        //Row:
                        //trace('---'+newline+'Row: '+this.firstChild.childNodes[i].attributes.id)
                        for (j=0; j<this.firstChild.childNodes[i].childNodes.length; j++) {
                                //id=value:
                                id.push(this.firstChild.childNodes[i].childNodes[j].attributes.id);
                                val.push(this.firstChild.childNodes[i].childNodes[j].childNodes[0].nodeValue);
                        }
                }
                for (k=0; k<j; k++) {
                        myData.push({id[k]:val[k]})
                }
                //trace('---'+newline+'Total: '+j+' colums in '+i+' rows');
        } else {
                trace('Error');
        }
};
data_xml.load('database.xml');
my_datagrid.dataProvider = myData;

database.xml:
Код:

<?xml version="1.0" encoding="windows-1251"?>
<database>
        <row id='1'>
                <column id='Login'>DarkWarrior</column>
                <column id='Password'>no_password</column>
                <column id='Info'>no_info</column>
        </row>
        <row id='2'>
                <column id='Login'>Камиль</column>
                <column id='Password'>нет_пароля</column>
                <column id='Info'>нет_информации</column>
        </row>
</database>


etc 15.04.2007 21:41

Код:

myData = new Array();
data_xml = new XML();
data_xml.ignoreWhite = true;
data_xml.onLoad = function(success) {
        if (success) {
                var nodes = this.firstChild.childNodes;
                for (var i=0; i<nodes.length; i++) {
                        var node = nodes[i];
                        var subNodes = node.childNodes;
                        for (var j=0; j<subNodes.length; j++) {
                                var subNode = subNodes[j];
                                my_datagrid.addItem({id:subNode.attributes.id,val:subNode.firstChild.nodeValue});
                        }
                }
        } else {
                trace('Error');
        }
};
data_xml.load('database.xml');

Как-то так. Правда, яснее?


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

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