2011-08-15 5 views
0
に他のコンボのSelectionChangedイベントで1回のコンボでデータを取得する方法

私のアプリケーションは、私は3つのコンボボックス、国、州、市とフォームを持っているのSilverlight(C#の純)は、Silverlightの

です。

私の必要条件は、国の選択変更イベントコンボボックスに私の状態コンボボックスを設定したいです。

ユーザーが国を選択したときに、その国の州を州のコンボに移入する必要があります。

データベーステーブル:

  • 国卓上(CountryID、COUNTRYNAME)
  • 州卓上(STATEID、ステート名、CountryId)
  • 市卓上(CityID、CityName、STATEID)

Service.svc.csファイルのDatabase im codingで値を取得するには

これは私のコードです。このコードはカントリーレコードを取得します。

public class GetCountry 
      { 
       public string CountryName { get; set; } 
      } 

    [OperationContract] 
      public List<GetCountry> GetCountryRecord() 
      { 
       using (Entities context = new Entities()) 
       { 
        return (from c in context.CountryMasters 
          select new GetCountry 
          { 
           CountryName = c.CountryName, 
          }).ToList<GetCountry>(); 
       } 
      } 

    //Code to Get State from State_Master table 


    public class GetState 
    { 
     public string StateName { get; set; } 
    } 



    [OperationContract] 
    public List<GetState> GetStateRecord(int countryId) 
    { 
     using (Entities context = new Entities()) 
     { 
      return (from c in context.StateMasters 
        select new GetState 
        { 
         StateName = c.StateName, 
        }).ToList<GetState>(); 
     } 
    } 
    //End of State Code 

これはForm.xaml.cs.xのコードです。これは、国のコンボボックス

 client = new ServiceReference1.AlumniServiceClient(); 
     client.GetCountryRecordCompleted += (s, ea) => 
        { 
         cboCountry.ItemsSource = ea.Result.Select(b => b.CountryName).ToList(); 
        }; 
       client.GetCountryRecordAsync(); 

の国々に移入されます、私は私の必要な結果や、それを得るために他の方法を得るために、私Service.svc.csファイルにクエリの変更提案してください。

return (**from c in context.StateMasters 
          select new GetState** 

これは、国コンボボックスのselectionChangedイベントでForm.xaml.csで私のコード

private void cboCountry_SelectionChanged(object sender, SelectionChangedEventArgs e) 
      { 
       var client = new ServiceReference1.AlumniServiceClient(); 

       client.GetStateRecordCompleted += (s, ea) => 
       { 
        cboState.ItemsSource = ea.Result.Select(b => b.StateName).ToList();      }; 
       client.GetStateRecordAsync(); 
      } 

である。しかし、これは私にStatesMaster

+0

StateテーブルにCountryIDがあります。 Webサービスとサーバー上のフィルタ? – AbdouMoumen

+0

同じ質問を何度も何度も繰り返してはいけません。ありがとう – Kev

答えて

0

のすべての国の存在を取得します。これは、答えられないかもしれませんあなたの直接の質問は、私はあなたが達成しようとしているもののより良い解決策を信じます
クライアント側のあなたの国のデータ構造がObservableCollection<State>のプロパティを持って、次に状態をバインドしてください国番号ComboBoxItemsSourceからSelectedItem.Statesに(ElementNameバインディングを使用して)、SelectionChangedイベントなどを心配する必要はありません。同じことが都市の関係&に適用されます。
私は米国以外の市民として、他のほとんどの国に「州」がないことを忘れないように気を配っています:)

+0

あなたの将来の参照のために、あなたが「可能な重複」をコメントに表示すると、その投票を閉じて質問を閉じることができます。表示されたリンクをたどって、リンクされた質問に回答を追加してください。それは、重複した重複が閉じられることを可能にし、この場合、任意の回答を失うことなく、うまくいけば削除されます。 – AnthonyWJones

+0

ありがとう、回答を再投稿しました –

0

これはあなたの直接の質問には答えないかもしれませんが、 クライアント側の国データ構造にObservableCollection<State>というプロパティを設定し、国コンボボックスのItemsSourceを国コンボボックスのSelectedItem.Statesにバインドします(ElementNameバインディングを使用)。SelectionChangedイベントなどを心配する必要はありません。州の関係&にも同じことが適用されます。 私は米国以外の市民として、他のほとんどの国に「州」がないことを忘れないように気を配っています:)

関連する問題