簡體   English   中英

Silverlight RIA服務數據

[英]Silverlight RIA Services Data

幾天來,我一直在試圖找出如何從Silverlight應用程序訪問數據的方法。

我想使用已經編寫的數據類和業務類。

根據另一篇文章的一些建議,我創建了一個Silverlight Business應用程序。 訪問數據的代碼在Web應用程序的Domain Service類中。 這是從Silveright應用程序調用的。

我想我接近了,但語法不正確。

這是我的域服務類中的代碼

Public Function GetGridData() As IEnumerable(Of Submissions)

Dim dtResults As DataTable

Dim _ConnectionString As String
= _

"Password=xxxx;Persist Security Info=True;User ID=xxxx;Initial Catalog=APCD;Data Source=xxxx"

mdsResults = s.GetSubmissions(3, 0, _ConnectionString,"2011", "0", False)

dtResults = mdsResults.Tables(0)

Dim MySubmissions = New List(Of Submissions
)()

For Each row As DataRow In
dtResults.Rows

Dim MySubmission = New Submissions() With
{ _
.SubmissionControlId = Convert.ToString(row("SubmissionControlId"
)), _
.OrgId = Convert.ToString(row("Org Id"
)), _
.DateProcessed = Convert.ToString(row("DateProcessed")) _

}


MySubmissions.Add(MySubmission)

Next

Return MySubmissions

End Function

The code in the silverlght page is



 Dim x As New Web.CustomerDomainContext

    grdSubmissions.DataContext = x.GetGridData()

全部編譯並運行,但網格為空。 我從逐步了解存儲過程中確實知道數據。

我有幾點要評論。

首先,最好不要從上面的函數中返回。 這是因為您失去了能夠編輯和更新數據的好處。 您應該返回IQueryable。 使用EF生成一些代碼來感受一下。

其次,而不是設置DataContext,而是在DataGrid上使用ItemsSource。

Dim gridData = x.GetGridData()
grdSubmissions.ItemsSource= gridData

第三,你也應該步的Silverlight代碼,並確保的GridData包含的值。 乍看之下,它看起來不正確,因為Silverlight是異步的。 從網格獲取數據的代碼應如下所示:

Dim domainContext = new MyDomainContext()
AddHandler domainContext.Completed, 
  Sub (op)
    grdSubmissions.ItemsSource = domainContext.Submissions
  End Sub 
domainContext.Load(domainContext.GetSubmissionQuery())

您最好通過以下示例進行操作: http : //blogs.msdn.com/b/kylemc/archive/2011/04/29/mvvm-pattern-for-ria-services.aspx,因為原始的Ria Services代碼是裸露的最少,並且需要更多便捷的方法。

更新1-DomainService

namespace SampleDataClass.Web.Services
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;

    public class Customer
    {
        [Key]
        public int CustomerId { get; set; }

        public string Name { get; set; }

        public string Address { get; set; }
    }

    // TODO: Create methods containing your application logic.
    [EnableClientAccess()]
    public class DomainService1 : DomainService
    {

        [Query]
        public IQueryable<Customer> GetCustomers()
        {
            return (new Customer[]
            {
                new Customer() { CustomerId=1, Name="Luigina Davide", Address="Via Giulio Petroni, 82 24050-Palosco BG" },
            }).AsQueryable<Customer>();
        }
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM