【问题标题】:populate a combobox using another combobox selected item, in WPF在 WPF 中使用另一个组合框选定项填充组合框
【发布时间】:2016-10-24 06:40:13
【问题描述】:

我知道这可能已经被问过和回答过。但我无法在我的问题中使用它们,因为我是 wpf 的新手并在 c# 中连接数据库。

这是问题所在:我有一个 mysql 数据库,它的表有 2 列国家和地区。我从一个组合框中选择国家,这很好。我想根据国家选择地区。我使用 2 个组合框来选择国家和地区。

当我选择一个国家时,我仍然无法加载地区。我认为我的 sql 字符串和 wpf 事件处理可能会引发问题。

         string new_student_sql = "SELECT Id,Name FROM world.city WHERE 
         CountryCode = '"; 

         string connectionStr = new_student_sql + comboBoxCountry.Text + 
         "' AND District= '" + comboBoxDistrict.Text + "'";


         MySqlCommand newStudent = new MySqlCommand(connectionStr, conn);
         newStudent.CommandText = connectionStr;
         conn.Open();
         DataTable dt = new DataTable();
         dt.Load(newStudent.ExecuteReader());
         conn.Close();
         dataGrid.DataContext = dt;
         MessageBox.Show(connectionStr);

我将国家/地区值的组合框设置为 comboBoxCountry.Text。但是当我在上面列出的 comboBoxDistrict 选择更改方法中给出该值时,我在区域中得到了一个空的组合框。

我应该如何根据第一个的选择来填充它们。任何建议和代码示例将不胜感激。 提前致谢!

【问题讨论】:

  • 您能否验证您对地区的查询是否确实返回了结果?如果它确实返回结果,请检查您所在地区组合框的数据绑定(方向)。从源更新,或双向更新。
  • @ISAF 不,它不会返回任何东西。
  • @ISAF 事情是这个comboBoxCountry.text 字符串不能被这个方法识别
  • 虽然您的问题很容易理解,但我建议您使用分离视图和数据处理的方法(例如 MVVM)来实现您的应用程序。构建正确的模型将解决您的所有问题。
  • @dymanoid 你能指导我寻找这样的来源吗,然后正如我所提到的,我不了解 WPF 开发。因为我今天必须提交这个,所以我没有足够的时间从头开始学习 MVVM。我感谢您的关注,并且肯定会这样做。你能指出我代码中的问题吗?

标签: c# mysql wpf combobox


【解决方案1】:

好吧,我想通了。实际上这是一个愚蠢的错误。我忘记在 countryselectionchange 事件方法中调用 comboBoxDistrict 方法。由于那个错误,地区不会得到更新。也代替 comboBoxDistrict.Text 使用 comboBoxDistrict.SelectedValue 来获取选定的值并使用变量而不是这样做

              string connectionStr = new_student_sql + comboBoxCountry.Text   + 
              "' AND District= '" + comboBoxDistrict.Text + "'";

使用变量,

              String country= comboBoxCountry.SelectedValue.ToString(); 

使其更易于使用。 感谢任何试图解决这个问题并将我引导到 MVVM 模式的人,我肯定会试一试。

【讨论】:

    猜你喜欢
    • 2013-05-29
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多