2011-08-11 196 views
1

組合框問題又回來了。根據另一個選擇的值設置一個組合框

我的應用程序是在Silverlight中用C#.Net代碼(VS2010)。我有三個組合框。

  1. 國家
  2. 國家
  3. 城市。

現在,我的要求是,當我從下拉框中選擇國家(例如:印度),然後在印度所有國家應在國家組合框填充,當我選擇一些其他的國家,國家的狀態應該是populated.For這我已經以這種方式創建了我的數據庫,只是爲每個國家提供了UniqueID。

我的數據庫表都是這樣設計的

  1. CountryTable(CountryId,國家或地區名稱)
  2. StateTable(STATEID,Statename的,CountryId)
  3. CityTable(CityId,CITYNAME,Statename的)

這樣我就設計了我的數據庫。

我已經編寫Service.svc.cs文件來填充我的Comboboxes。

代碼在Service.svc.cs

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

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

Service.svc.cs代碼的終結。在Form.Xaml.cs

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

       }; 
      client.GetCountryRecordAsync(); 

代碼是如何即時填充我的組合框。 現在我希望國家的價值觀應該根據所選國家而改變,同樣城市組合框的價值也應根據所選國家而改變。

我如何通過使用此代碼實現此目的,而不是重新編碼太多的東西。

請指導機智碼...

+2

請給您的問題更有意義的標題。 – ChrisF

回答

0

無論是在SelectionChanged事件第一ComboBox或當二傳手界被調用使數據庫調用來填充序列中的下一個ComboxBox的。

所以最初你填充國家組合。然後,當用戶選擇國家時,這將發送數據庫請求來填充狀態組合。因爲這一切都是異步發生的,所以在發生UI的時候你並沒有把它捆綁在一起。

+0

不,實際上我已經嘗試了不同的代碼來解決這個問題,但沒有達到所需的結果。現在我只在相同的代碼中填充數據在國家組合中。正如我所提到的,我已經在服務文件中編寫了代碼。現在要實現即時尋找我應該在哪裏編碼?以及如何? –

+0

@Ehtesham - 您是使用綁定的MVVM還是使用'SelectionChanged'事件來更新所選國家? – ChrisF

+0

通過Page_Loaded事件,我的國家/地區組合將獲得CountryMaster表中可用的所有國家/地區名稱。 現在我想要在狀態組合框SelectionChanged事件中更改狀態組合值。 就像用戶從國家組合選擇印度而不是印度的國家應該在組合狀態下填充時一樣,當選擇改變到其他國家時,則應該加載相應的狀態。 我應該解釋一下我的數據庫結構還是很明白的? –

相關問題