如何在Silverlight中的其他组合的SelectionChanged事件中获取一个组合中的数据

时间:2011-08-15 06:31:04

标签: silverlight silverlight-4.0

我的应用程序在Silverlight(c#.Net)

我有一个包含三个组合框的表单,Country,State,City。

我的要求是我想在Countrychanged组合框的Selectionchanged事件中填充我的状态组合框。

当用户选择某个国家/地区时,应该在状态组合中填充该国家/地区的状态。

数据库表:

  • 国家/地区表 - (CountryID,CountryName)
  • 状态表 - (StateID,StateName,CountryId)
  • 城市表 - (CityID,CityName,StateId)

从Service.svc.cs文件中的Database im编码中检索值

这是我的代码。此代码将获得国家记录。

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

这是我在Country Combobox的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();
            }

但是这将使我在美国大家庭中出现的所有国家

2 个答案:

答案 0 :(得分:0)

这可能无法解答您的直接问题,但我相信它可以更好地解决您要实现的问题 让您在客户端的国家/地区数据构造具有ObservableCollection<State>的属性,然后将州ComboBox的{​​{1}}绑定到国家ItemsSource SelectedItem.States (使用ElementName绑定),那么您不必担心ComboBox事件等。同样适用于State&amp;城市关系。
作为一名非美国公民,我觉得有必要提醒大家,其他大多数国家都没有“国家”:)

答案 1 :(得分:0)

这可能无法回答您的直接问题,但我相信它可以更好地解决您要实现的目标 让客户端的Country数据构造具有ObservableCollection<State>的属性,然后将State ComboBox的ItemsSource绑定到Countries ComboBox的SelectedItem.States(使用ElementName绑定),那么你不必担心SelectionChanged事件等。同样适用于State&amp;城市关系。 作为一名非美国公民,我觉得有必要提醒大家,其他大多数国家都没有“国家”:)