2012-03-19 7 views
0

wcfサービスからグリッドをバインドするためのSilverlightアプリケーションにデータを取りたいと思っています。Silverlight Wcfバインディンググリッド

私はこのようにしています。

これは私のサービスクラス

public class Employee 
    { 
     public string Adres { get; set; } 
     public string Country { get; set; } 
     public string City { get; set; } 
     public string Region { get; set; } 
    } 

    public List<Employee> CustomerList() 
      { 

       OracleConnection conn = new OracleConnection("connectionstring"); 
       OracleCommand cmd = new OracleCommand(); 
       var custList = new List<Employee>(); 
       cmd.CommandText = "select * from EMPLOYEES"; 

       cmd.CommandType = CommandType.Text; 
       cmd.Connection = conn; 
       conn.Open(); 

       OracleDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 


       if (dr != null) 
       { 
        while (dr.Read()) 
        { 
         var cust = new Employee 
         { 
          Adres = dr.GetString(7), 
          Country = dr.GetString(11), 
         }; 
         custList.Add(cust); 
        } 
       } 
       return custList; 
      } 

とSilverlightアプリケーションのコード

client.CustomerListCompleted += new EventHandler<CustomerListCompletedEventArgs>(client_CustomerListCompleted); 
      client.CustomerListaAsync(); 
     } 

     void client_CustomerListCompleted(object sender, CustomerListCompletedEventArgs e) 
     { 
      gridControl1.ItemsSource = e.Result[0]; 
     } 

これは作品であるが、私は複数のSQLクエリを実行する必要があると私はone.howが私はできそれぞれのクラスを実装することはできませんこのタスクを実行します。

ありがとうございました。

+0

"複数のSQLクエリを実行する必要があります"とはどういう意味ですか?あなたはあなたの顧客リストに加えて取得する必要がある他のデータセットを持っていて、それをクライアントに返す最適な手段を探していますか? – KodeKreachor

答えて

0

コードをもう少し分割する必要があります。私はすべてあなたが従業員を使用する複数のサービスを持っているということを意味していると仮定しています。そうした場合、Silverlight側に複数のEmployeeオブジェクト(サービス名空間で区別されます)があることがわかります。

この問題を回避するには まず、ビジネスエンティティ/データ転送オブジェクト用のサーバーサイドプロジェクトを作成します。従業員はそこにいるはずです。

次に、Silverlightプロジェクトを作成し、リンククラスとして「既存のクラスを追加する」。

更新サービスを実行すると、VS2010サービス生成コードはEmployee ...を含まなくなり、むしろ共有ビジネスオブジェクトを利用します。したがって、複数のサービス参照で同じ従業員が参照されるようになりました。

次にSilverlightで、私はsvc呼び出しから受け取った結果をさらに分割します。 ObservableCollectionを作成し、結果をループスルーしてこのコレクションに追加します。 Obsのコレクションにバインドすることは、銀色を幸せにする方法です。 (また、従業員にはいくつかのINotifyPropertyChangedが必要ですが、うまくいけば、これは役に立つスタートです)。

関連する問題