EXT SimpleStore

我从数据库中取出记录按要求转换成而为数组后 最后加上该行程序var storee=new Ext.data.SimpleStore({data:dataa,fields:["id","name","organization","homepage"]});
其中dataa就是我转换后的二维数组 可是老是报错说undefined未定义或者为空 dataa我转换后的值为[[1,'aa','bb'],[2,'ss','dd']]
这是怎么回事啊 纠结搞了一下午!
[b]问题补充:[/b]
不是的啊 和这没关系 我都试了的!
[b]问题补充:[/b]
我如果手动定义一个二维数组 却是没有问题的 哎 纠结啊
[b]问题补充:[/b]
ROwEN
我在var storee=new Ext.data.SimpleStore({data:dataa,fields:["id","name","organization","homepage"]});
这行程序前加了一个alert(dataa),他执行了的 也是一个二维数组了 这样应该表示他已经加载了吧 因为程序是顺序执行的嘛
[b]问题补充:[/b]
我想问rowen你遇到这种问题是怎么解决的啊 能给个方法吗
[b]问题补充:[/b]

var date2=""; <% for(addBI add:list){ %> var date ="[" + '"<%=add.getLmbh()%>"' + "," + '"<%=add.getLjbh()%>"' +"," + '"<%=add.getLjmc()%>"' +","+ '"查看BI"' +"]" +"," ; date2=date2+date; <% } %> var datee="["+date2+"]"; 那个循环可以不用看 是用hibernate作的 [b]问题补充:[/b] 是我不小心写错的 var dataa="["+date2+"]"; 我实在找不出什么原因 哎!谢谢你们啦 [b]问题补充:[/b] 我把输出的东西发给大家看看 呵呵 谢谢啦 照片我以上传 [b]问题补充:[/b] 好的 我贴代码吧 可能有点乱 我本身不是做代码的 是做数据仓库的 最近要用EXT写点东西 只有亲自出马啦 呵呵 谢谢大家啦! <script> var date2=""; <% for(addBI add:list){%> var date ="[" + '"<%=add.getLmbh()%>"' + "," + '"<%=add.getLjbh()%>"' +"," + "," + '"查看BI"' +"]" +"," ; date2=date2+date; <%}%> [color=red]function replacePos(strObj, pos, replacetext) { var str = strObj.substr(0, pos-1) + replacetext + strObj.substring(pos, strObj.length); return str; }//这个函数是处理数据库中取出数据最后一个逗号的 不用管 date2 = replacePos(date2, date2.length,"");[/color] var datee="["+date2+"]"; aaa();//把表格展现放在函数里面,调用该函数 function aaa(){ var dataa=datee alert(datee); var storee=new Ext.data.SimpleStore({data:dataa,fields:["lmbh","ljbh","ljmc"]});//转换成EXT支持的数据类型 alert("aaaa");//程序到这正好就不会执行了!如果换成手动定义的数组则会执行以下代码! var grid = new Ext.grid.GridPanel({ //创建一个表格 renderTo:"BiManage", title:"门户项目开发团队", height:150, width:600, columns:[{header:"栏目编号",dataIndex:"lmbh",sortable:true}, {header:"链接编号",dataIndex:"ljbh",sortable:true}, {header:"链接名称",dataIndex:"ljmc"},{header:"查看BI",dataIndex:"lookBi"}], store:storee, autoExpandColumn:2 }); }

[b]问题补充:[/b]
非常感谢 大家 问题解决了!问题的答案就是JIM.JIN所说的 把函数改成
var datee=eval("["+date2+"]");这样就可以了 谢谢大家

var dataa=eval("["+date2+"]"); 试试

有4个字段,dataa里的数据却只有4列,当然错啦

建议在这句的前面使用firebug来观察dataa,或许它并不是你想像中的二维数组。

[quote]我如果手动定义一个二维数组 却是没有问题的 哎 纠结啊[/quote]
你手动一个二维数组是在程序员中,这样dataa是个已定义好的加载进来的。
而你原先在数据库中取过来的,在SimpleStore加载的时候,这个dataa还没加载。
这个跟数组没有关系。
你报的错都是undefined,就是这个dataa没定义。也就是还没加载。。

[quote]顺序执行[/quote]
不是吧。。EXT是异步执行的。。

这个应该是dataa当时还没有定义导致的,
把你的完整代码粘出来看看

var [color=red]datee[/color]="["+date2+"]";
dataa和datee不是同一个变量啊?

你试着输出datee变量,我怀疑这个是个字符串,而不是二维数组。
还是一句话,用firebug调试是最快的办法。

<%
}
%>
var [color=red]datee[/color]="["+date2+"]";

var storee=new Ext.data.SimpleStore({data:[color=red]dataa[/color],fields:["id","name","organization","homepage"]});

两处不一致

把页面代码都粘出来吧,我看可能你的js顺序写得有问题

可以肯定,,dataa是个字符串,而不是二维数组,不然输出是个OBJECT

var datee="["+date2+"]";
将首尾的引号去掉

拜托,有用var dataa=Ext.decode(datae) 转成json格式吗

var datee=[color=red]eval/color; 试试

怎么没看见你把代码谢谢到Ext.onReady()里。。
[quote]var storee=new Ext.data.SimpleStore({data:dataa,fields:["lmbh","ljbh","ljmc"]});//转换成EXT支持的数据类型
alert("aaaa");//程序到这正好就不会执行了!如果换成手动定义的数组则会执行以下代码!
var grid = new Ext.grid.GridPanel({ //创建一个表格
renderTo:"BiManage",
title:"门户项目开发团队",
height:150,
width:600,
columns:[{header:"栏目编号",dataIndex:"lmbh",sortable:true},
{header:"链接编号",dataIndex:"ljbh",sortable:true},

{header:"链接名称",dataIndex:"ljmc"},{header:"查看BI",dataIndex:"lookBi"}],

store:storee,

autoExpandColumn:2

});
} [/quote]
把上面这段放到EXT里试试
Ext.onReady(function(){
//放上面的代码
});