2011-08-15 5 views
0
다른 콤보의 인 selectionchanged 이벤트에 하나의 콤보에서 데이터를 얻을하는 방법

내 응용 프로그램은 내가 세 가지 콤보 상자, 국가, 주, 도시와 형태가 실버 라이트 (C#을 닷넷)는 실버

입니다.

필자의 요구 사항은 국가의 선택 변경 이벤트 콤보 상자에서 내 상태 콤보 상자를 채우고 싶습니다.

사용자가 해당 국가의 주를 합산하여 채워야하는 국가를 선택한 경우.

데이터베이스 테이블 :

  • 나라 테이블 - (CountryID, COUNTRYNAME)
  • 주 테이블 - (StateID, StateName, CountryId)
  • 시 테이블 - (CityID, CityName이, StateId)

Service.svc.cs 파일에서 코딩 한 데이터베이스에서 값을 검색하려면

이것은 내 코드입니다. 이 코드는 국가 기록을 얻을 것입니다.

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. 그것은 국가 콤보 상자에서 국가를

 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** 

이 국가 콤보

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(); 
      } 

의에서 selectionChanged 이벤트에서 Form.xaml.cs 내 코드는하지만이 StatesMaster

+0

국가 테이블에 국가 ID가 있습니다. 선택한 국가의 국가 ID를 보내지 않는 이유는 무엇입니까? 웹 서비스 및 서버의 필터?! – AbdouMoumen

+0

같은 질문을 계속 반복해서하지 마십시오. 감사합니다 – Kev

답변

0

이 대답하지 않을 수 있습니다 나에게 모든 미국 선물을 얻을 것이다 귀하의 직접적인 질문이지만 나는 당신이 달성하고자하는 더 나은 해결책을 믿습니다
클라이언트 측 국가 데이터 구조가 ObservableCollection<State>의 속성을 가지게 한 다음 상태를 바인딩하십시오 ComboBoxItemsSource과 의 국가 별 ComboBox (ElementName 바인딩 사용)은 SelectionChanged 이벤트 등을 걱정할 필요가 없습니다. & 도시 관계에 대해서도 동일하게 적용됩니다. 나는 대부분의 다른 나라는 '미국'을하지 않아도 당신을 생각 나게 할 의무가 기분이 아닌 미국 시민으로
:

+0

당신의 미래 참고를 위해, 당신이 투표에서 질문을 닫으려고했기 때문에 코멘트에 "possible duplicate"가 표시 될 것입니다. 제공된 링크를 따라 링크 된 질문에 답을 추가하십시오. 그러면 중복 된 문서가 닫히고이 경우에는 답변을 잃어 버리지 않고 잘하면 삭제할 수 있습니다. – AnthonyWJones

+0

감사합니다. 답변을 다시 게시하십시오. –

0

이 직접적인 질문에 대답하지 않을 수 있습니다 그러나 나는 그에게 당신이 시도하고있는 무슨에 더 나은 솔루션을 생각 클라이언트 측의 국가 데이터 구조가 ObservableCollection<State>의 속성을 가지면 상태 ComboBox의 ItemsSource을 국가 ComboBox의 SelectedItem.States 바인딩 (ElementName 바인딩 사용)으로 바인딩하면 SelectionChanged 이벤트 등에 대해 걱정할 필요가 없습니다. 상태는 &시 관계에도 동일하게 적용됩니다. 미국 이외의 시민으로서 나는 대부분의 다른 국가에 '미국'이 없음을 상기시켜야 할 의무가 있습니다.