如何更改具有itemrenderers的柔性火花列表中的dataprovider?
在Flex 4.5中,我有一个应用程序,它具有一个加载spark列表的BorderContainer(mxml样式 - _myList,borderContainer存储在父应用程序之外的库中),它使用itemRenderer加载arrayCollection(我应该注意到itemRenderer是不是内联渲染器 - 在选择列表中的项目时,itemRenderer展开,根据从列表中选定项目传递的数据在项目渲染器中加载特定控件),并允许用户执行搜索。 这在启动/加载时运行良好,并且很好,直到我尝试更改列表的dataProvider(我的应用程序允许用户切换数据源,然后使用新变量创建新的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 as 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()函数。
任何指导将不胜感激!
有没有人有任何建议如何最好地清除以前的dataProvider并重新分配dataProvider基于一个新的listCollection火花列表没有崩溃?
这应该工作:
myList.dataProvider = myNewDataProvider;
如果您只想更新dataProvider中的单个项目,则可以更新它,然后调用集合上的itemUpdated()以强制刷新渲染器。
也许这与我的itemRenderer有关? 我应该先把它杀掉吗?
你的itemRenderer与它有什么关系是值得怀疑的,但是如果没有看到它背后的代码,很难肯定地说。 您可能需要详细说明应用程序崩溃时发生的情况。 你有运行时错误吗? 或者是其他东西?
链接地址: http://www.djcxy.com/p/34619.html上一篇: how do i change dataprovider in a flex spark list that has itemrenderers?
下一篇: spark list control showing incomplete data on dataProvider update