在flex中如何在datagrid上刷新dataprovider



请帮助我...

我有一个简单的数据杂志,DataProvider是一个服务" getServicedatiresult.lastresult",此服务来自返回SQLServer数据的WebMethod Aspnet。我创建了click_button的事件,该事件插入数据并将数据获取到datagrid ....问题是数据杂志。它仅在几次调用按钮事件时才刷新数据。

我尝试了:

datagrid.refresh();
datagrid1.columns.clear();
datagrid1.columns.refresh();
getServiceDatiResult.lastResult.refresh();
getServiceDatiResult.lastResult.commit();

代码:

<mx:DataGrid id="datagrid1" creationComplete="datagrid1_creationCompleteHandler(event)"
             dataProvider="{getServiceDatiResult.lastResult}" dropShadowVisible="true"
             fontSize="12" fontWeight="normal" textAlign="center" verticalAlign="middle" editable="true">
<s:Button id="button3"  label="Insdata3_now" click="button3_clickHandler(event)"/>

[Bindable]
protected function button3_clickHandler(event:MouseEvent):void
{
    getServiceDatiResult.token = service.getServiceDati();
        <!-- regresh ???? -->           
    getServiceDatiResult.lastResult.commit();
    getServiceDatiResult.lastResult.refresh();
}

您想刷新数据杂志的dataprovider;这又将更新数据杂志。

假设您有一个arraycollection,可以使用refresh()方法来刷新所有项目:

(datagrid.dataProvider as ArrayCollection).refresh();

如果您仅刷新单个项目,则可以通过使用itemupdated()更新单个项目来节省一些处理时间:

(datagrid.dataProvider as ArrayCollection).itemUpdated(item);

MX DataGrid将采用任何对象并尝试在数据杂志中显示它,因此,如果您从服务器返回数组或XML,则可能必须替换DataProvider:

datagrid.dataProvider = newDataProvider;

我同意reboogs解决方案。另一种做法是,与dataprovider.refresh()相比,dataGrid.invalidatelist(),这并不是很重,因为无效将重新加载和重新粉刷UI。

我认为,如果您正确编写此请求,则根本不需要刷新!对我来说,看来您在调用一些异步请求,但也许您会同步操作。我认为是因为处理程序方法的[可约束]标签,为什么在那里有呢?

,但是要决定您认为您没有给我们所有信息。例如 - 在哪里设置变量GetServicatiresult?您在里面设置了一些令牌,但是在哪里设置了Lastresult?

我重复一遍,我认为只是为了调用简单的请求,无需刷新任何东西,问题在其他地方 - 处理请求itsef。

(datagrid.dataprovider as arrayCollection).refresh();当您使用诸如DataProvider之类的数组时...在我的情况下,方法是有效的。在我的情况下,单击按钮(事件)调用3个获取3个不同datagrid的服务...因此,我've 3 callResponder on 3 on 3 callResponder on 3 select to sqlserver by aspnet。.. sincronize所有操作都非常重要...我的临时个人解决方案是修改的SQL表,并使用click butce button(事件)减少操作。在这种方式上,datagrid完美更新...但是我正在研究一个新解决方案。您寻求帮助...

只需刷新您的数据提供商,

var datapro:ArrayCollection = new ArrayCollection();
//
function dataRefresh():void
{
  datapro.refresh();
}
//
//
<mx:DataGrid id="datagrid1"  creationComplete="datagrid1_creationCompleteHandler(event)" dataProvider="{datapro}">
//
//

最新更新