请帮帮我......
我有一个简单的DataGrid,dataprovider是一个服务“getServiceDatiResult.lastResult”,这个服务来自webmethod aspnet,它返回一个sqlserver数据。 我通过click_button创建了Event,它插入数据并将数据导入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();
}
答案 0 :(得分:7)
您想要刷新DataGrid的数据提供者;这反过来将更新DataGrid。
假设您有一个ArrayCollection,您可以使用refresh()方法刷新所有项目:
(datagrid.dataProvider as ArrayCollection).refresh();
如果您只刷新单个项目,则可以通过使用itemUpdated()更新单个项目来节省一些处理时间:
(datagrid.dataProvider as ArrayCollection).itemUpdated(item);
MX DataGrid将获取任何对象并尝试在DataGrid中显示它,因此如果您从服务器返回一个Array或XML,则可能必须替换dataProvider:
datagrid.dataProvider = newDataProvider;
答案 1 :(得分:0)
我同意Reboogs解决方案。另一种方法是执行,dataGrid.invalidatelist(),
与dataprovider.refresh()
相比,这有点重,因为无效将重新加载并重新绘制UI。
答案 2 :(得分:0)
我认为如果您正确地调用此请求,则根本不需要刷新!对我来说,看起来你正在调用一些异步请求,但也许你认为它是同步操作。我认为是因为处理程序方法中的[Bindable]标签,你为什么要在那里?
但是我认为你认为你没有给我们所有的信息。例如 - 在哪里设置变量getServiceDatiResult?你在里面设置了一些令牌,但设置lastResult的内容和位置是什么?
我重复我认为只是为了调用简单的请求,没有必要刷新任何东西,问题出在其他地方 - 处理请求itsef。
答案 3 :(得分:0)
(datagrid.dataProvider as ArrayCollection).refresh();当你使用像dataprovider这样的数组时方法是有效的...在我的情况下,问题是点击按钮(事件)调用3个服务获得更新3个不同的数据网格...所以我有3个响应者在3上通过aspNet选择到SqlServer。 .. sincronize所有的操作都是为了...我的临时个人解决方案是修改Sql表并通过点击按钮(事件)减少操作..这样数据网格更新完美......但我正在研究一种新的解决方案..谢谢求你帮忙......
答案 4 :(得分:0)
只需刷新您的数据提供者,如下所示
var datapro:ArrayCollection = new ArrayCollection();
//
function dataRefresh():void
{
datapro.refresh();
}
//
//
<mx:DataGrid id="datagrid1" creationComplete="datagrid1_creationCompleteHandler(event)" dataProvider="{datapro}">
//
//