Просмотр полной версии : Добавление динамических элементов в dataProvider
DarkWark
15.04.2007, 19:33
Есть исходные данные:
$name = Array(name1,name2);
$value = Array(value1,value2);
Нужно сделать следующее добавление в массив:
$dataProvider = Array({$name[i]:$value[i]}); // i=0,1
Чтобы в итоге получить:
$dataProvider = Array({name1:value1},{name2:value2})
Читайте про метод push у Array.
DarkWark
15.04.2007, 19:40
Читали =)) Ругается он:
for(k=0;k<id.length;k++){
myData.push({id[k]:val[k]})
}
И правильно делает, внутри push неверный синтаксис. Самостоятельно додумаем?
DarkWark
15.04.2007, 20:34
Не получается =(
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 =(
«не получается» — не ответ. Приводим полный код.
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>
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');
Как-то так. Правда, яснее?
if (success && this.status == 0) {
//...
}else{
trace('Error:>' + this.status);
}
DarkWark
16.04.2007, 17:29
Всем спасибо =)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.