在Flex 4.5中,我有一个应用程序,它具有一个加载spark列表(mxml样式 - _myList,borderContainer存储在父应用程序之外的库中)的BorderContainer,它使用itemRenderer加载arrayCollection(我应该注意说itemRenderer不是内联渲染器 - 在选择列表中的项目时,itemRenderer展开,根据从列表中所选项目传递的数据在项目渲染器中加载特定的控件,并允许用户执行搜索。这在启动/加载时运行良好,并且很好,直到我尝试更改列表的dataProvider(我的应用程序允许用户切换数据源,然后使用新变量创建新的dataProvider)。我曾尝试:如何更改具有itemrenderers的柔性火花列表中的dataprovider?
//app crashes
_myList.dataProvider.removeAll();
//app crashes
_myList.dataProvider = new ArrayCollection();
_myList.dataProvider = acNew;(the new array collection to populate the list)
//app doesn't crash, but I can't get to any of the global variables upon
//re-creation at the parent app level (even though I assigned it an id)
//so this is causing more headaches than I wanted
this.removeElement(_myList);
var searchList:SearchNew = new SearchNew();
searchList.percentWidth = 100;
searchList.percentHeight = 100;
searchList.id = "_myList";
searchList.setStyle("fontFamily","MyriadNoCFF");
searchList.g_appName = this.g_appName;
searchList.g_sessionID = this.g_sessionID;
searchList.g_TableID = this.g_tableID;
searchList.g_targetedLayer = this.g_tName;
searchList.g_testAC = new ArrayCollection();
searchList.g_item = <item/>;
searchList.g_req = <req/>;
searchList.g_sub_req = <req/>;
searchList.g_prev_where = <where/>;
searchList.g_prev_ws = <w/>;
searchList.g_breadcrumbsAC = new ArrayCollection();
searchList.g_controlType = "";
searchList.itemRenderer = new ClassFactory(myItemRenderer);
searchList.dataProvider = acNew;
this.addElement(searchList);
我试过_myList.dataGroup.invalidateDisplayList();(_myList.dataProvider为ArrayCollection的).REFRESH(); .....都未工作,只是应用不断崩溃。
有没有人有任何建议如何最好地清除以前的dataProvider和重新分配dataProvider基于一个新的listCollection火花列表没有它崩溃?也许这与我的itemRenderer有关?我应该先把它杀掉吗?
我是使用高级itemRenderer的新手。这里有一个例子:
http://flexponential.com/2009/09/23/deleting-items-in-a-list-from-an-item-renderer/
,会做(种)我想要它做的(如果不是使用removeItemAt,我用的removeAll(),和一个列表框的值以外的变化所提及的所有组件都会启动该功能,而不是在项目渲染器本身内进行单击),不同之处在于它是内联渲染器,而我不是。我不知道如何从包含我的列表的borderContainer访问deleteItem()函数。
任何指导将不胜感激!
当你说应用程序崩溃,你可以提供一些细节?你有运行时错误吗?如果是这样,错误是什么? – JeffryHouser 2012-03-13 13:17:01
没有运行时错误....没有记录错误(我有我的功能在try/catch)...只是一个灰色的厄运屏幕。它被挂起,没有迹象表明为什么。 – jeep 2012-03-13 13:23:06