【问题标题】:Consuming WCF Data Services使用 WCF 数据服务
【发布时间】:2014-05-24 00:23:54
【问题描述】:

我尝试使用之前创建的 wcf 数据服务引用。一切正常,直到我尝试在客户端的数据网格中加载数据,但它只加载列标题。尽管数据库中已填满数据,但没有加载数据。

visual studio 没有抛出任何错误。

这里是代码和屏幕截图

namespace AccountingApplication.Views.Invoices
{
    public partial class InvoicePages : Page
    {
        InventoryEntities SalesOrderHeaderContext = new InventoryEntities(new Uri("http://localhost:9090/EntityDataServices/EntityDataServices.svc/"));
        DataServiceCollection<SalesOrderHeader> SalesOrderCollection = new DataServiceCollection<SalesOrderHeader>();

        public InvoicePages()
        {
            InitializeComponent();

            LoadSalesOrderHeader();
        }

        private void LoadSalesOrderHeader()
        {
            SalesOrderCollection.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(SalesOrderCollection_loadCompleted);
            var soQuery = from salesOrder in SalesOrderHeaderContext.SalesOrderHeaders 
                          select salesOrder;
            SalesOrderCollection.LoadAsync(soQuery );
        }

        private void SalesOrderCollection_loadCompleted(object sender, LoadCompletedEventArgs e)
        {
            SalesOrderHeaderRadGridView.ItemsSource = SalesOrderCollection.ToList();
            testDG.ItemsSource = SalesOrderCollection;
        }
    }
}

【问题讨论】:

    标签: c# wcf wcf-data-services


    【解决方案1】:

    这只是一个想法,但它会让你在这一行从 db 中选择数据

    var SOQuery = from salesOrder in SalesOrderHeaderContext.SalesOrderHeaders select salesOrder;
    

    但您没有将 SOQuery 放在任何地方。我只是看不到您如何处理选定的数据。你收集了数据,但你没有使用它。 SOQuery 现在应该是某种列表。希望这对任何人都有帮助。

    【讨论】:

    • 是的,你是对的,但即使我使用 SalesOrderCollection.LoadAsync(SOQuery);像这样。它仍然没有显示记录。只有屏幕截图中的列标题
    • 好的。那么,你在选择数据之前拥有的这个事件处理程序,它对你有什么作用呢?在从数据库中进行选择之前,您是否尝试在页面上填充数据?
    • 老实说,我只按照教程...我不知道我在做什么:D
    • :D 也可以。所以,用更简单的方式来解释它: += new EventHandler 将调用 SalesOrderCollection_loadCompleted ,它将集合放入数据网格的源中。但是您从 db 中的选择是在之后发生的。
    • 试着把这条线 SalesOrderCollection.LoadCompleted += new EventHandler(SalesOrderCollection_loadCompleted);在此行之后 SalesOrderCollection.LoadAsync(SOQuery);更有意义的是先收集数据,然后再显示。我没有任何项目可以对此进行测试,所以这是反复试验。 :)
    【解决方案2】:

    我已经知道答案了,但我需要先睡一觉。我会在早上第一时间发布答案

    【讨论】:

      【解决方案3】:

      好吧,显然互联网上几乎所有的教程都使用这些行作为 clientaccesspolicy.xml 放入这样的

      <?xml version="1.0" encoding="utf-8"?>
      <access-policy>
        <cross-domain-access>
          <policy>
            <allow-from http-request-headers="SOAPAction">
              <domain uri="*"/>
            </allow-from>
            <grant-to>
              <resource path="/" include-subpaths="true"/>
            </grant-to>
          </policy>
        </cross-domain-access>
      </access-policy> 
      

      自从 silverlight 4 以来,这条线在这条线上造成了一个重大问题

      <allow-from http-request-headers="SOAPAction">
      

      我们必须更改 http-request-headers="*"> 以使 Web 服务正常工作。

      【讨论】:

        猜你喜欢
        • 2011-04-22
        • 2011-03-06
        • 1970-01-01
        • 2012-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-14
        相关资源
        最近更新 更多