在Flex中如何刷新datagrid上的dataprovider

Fab*_*des 2 apache-flex

请帮帮我...

我有一个简单的DataGrid,dataprovider是一个服务"getServiceDatiResult.lastResult",这个服务来自webmethod aspnet,它返回一个sqlserver数据.我通过click_button创建了Event,它插入数据并将数据导入Datagrid ....问题是datagrid.它仅在我多次调用按钮事件时刷新数据.

我尝试过:

datagrid.refresh();

datagrid1.columns.clear();
datagrid1.columns.refresh();

getServiceDatiResult.lastResult.refresh();
getServiceDatiResult.lastResult.commit();
Run Code Online (Sandbox Code Playgroud)

代码:

<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();
}
Run Code Online (Sandbox Code Playgroud)

Jef*_*ser 7

您想要刷新DataGrid的dataprovider; 这反过来将更新DataGrid.

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

(datagrid.dataProvider as ArrayCollection).refresh();
Run Code Online (Sandbox Code Playgroud)

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

(datagrid.dataProvider as ArrayCollection).itemUpdated(item);
Run Code Online (Sandbox Code Playgroud)

MX DataGrid将获取任何对象并尝试在DataGrid中显示它,因此如果您从服务器返回一个Array或XML,则可能必须替换dataProvider:

datagrid.dataProvider = newDataProvider;
Run Code Online (Sandbox Code Playgroud)