0

我在尝试刷新 Gridview 中的数据时遇到问题,问题是如果我的应用程序正在运行并且我更新了数据库上的某些内容,则新数据不会刷新,但如果我关闭应用程序并再次重新运行,则会出现更改。

这是我在构造函数中的一段代码:

IQueryable<GyLoadCarrier> loadCarrierQuery = queryRepository.GetGyLoadCarriers();

        LoadCarriersMfsTransportsLoader = new WcsDomainCollectionViewLoader<GyLoadCarrier>(loadCarrierQuery)
        {
            RequestTotalItemCount = true
        };

        LoadCarriersMfsTransportsLoader.LoadStarted += OnLoadCarrierMfsTransportsLoaderLoadStarted;
        LoadCarriersMfsTransportsLoader.LoadCompleted +=OnLoadCarrierMfsTransportsLoaderLoadCompleted;

        AvailableLoadCarriers = new DomainCollectionView<GyLoadCarrier>(LoadCarriersMfsTransportsLoader,
                                                                        LoadCarriersMfsTransportsLoader.Data);
        LoadCarriersMfsTransportsLoader.View = AvailableLoadCarriers;

        INotifyCollectionChanged notifyingSortLoadCarrierDestination = AvailableLoadCarriers.SortDescriptions;
        notifyingSortLoadCarrierDestination.CollectionChanged += (sender, e) => AvailableLoadCarriers.MoveToFirstPage();

        using (AvailableLoadCarriers.DeferRefresh())
        {
            AvailableLoadCarriers.PageSize = 30;
            AvailableLoadCarriers.MoveToFirstPage();
        }

LoadCarriersMfsTransportsLoader.Load("LoadCarrierAddressChanged");

刷新命令只是:

 protected override void OnRefresh()
    {

        MfsTransportsLoader.Load(Resources.Strings.LoadingMfsTransportsProgressMessage);
    }

所以知道为什么会这样吗?

4

1 回答 1

3

假设您使用相同的 DataServiceContext(或派生)类实例从您的客户端运行相同的查询两次(更新之前和之后),这很可能是由于 MergeOption (http://msdn.microsoft.com/en-我们/图书馆/system.data.services.client.dataservicecontext.mergeoption.aspx)。默认值 AppendOnly 阻止将更新应用于您的客户端对象,因为它们已经存在(这是为了不覆盖您可能所做的任何潜在更改)。您可以通过将 DataServiceContext.MergeOption 设置为 OverwriteChanges 来解决此问题。

于 2012-05-21T17:17:13.800 回答