c# - 组合框无法准确获取数据库值

标签 c# mysql wpf combobox

我正在尝试将 Windows 窗体应用程序迁移到 wpf,但遇到了困难。

它出现在使用组合框时,SelectedIndexChanged 事件已被 SelectionChanged 替换,因为它是 wpf 等效项。

我的应用程序已连接到 MySQL 数据库,它从中获取所有信息。 我的一个特定组合框由数据库表中的一个字段填充。 这个想法是; 选择一个组合框项目,其他文本框应显示同一行的相应值。 相反,这就是发生的事情。

Example

背后的代码:

    private void Domain_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        // Set connection parameters
        string sqlcon = "datasource = localhost; port = 3306; username = root; password = localhost";
        // Set query to excecute
        string query_fetch = "select * from mail.smtp where domain = '" + this.Domain.Text + "';";
        // declaratons
        MySqlConnection con = new MySqlConnection(sqlcon);
        MySqlCommand cmd_fetch = new MySqlCommand(query_fetch, con);
        MySqlDataReader rdr;

        // Excecution of command
        try
        {
            con.Open();
            rdr = cmd_fetch.ExecuteReader();

            while (rdr.Read())
            {
                // Declarations
                string sdomainid = rdr.GetInt32("domainid").ToString();
                string ssmtp = rdr.GetString("smtp");
                string sport = rdr.GetString("port");
                string ssecurity = rdr.GetString("security");

                // Bindings
                Domain_ID.Text = sdomainid;
                SMTP.Text = ssmtp;
                port.Text = sport;
                security.Text = ssecurity;
            }
            con.Close();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

xaml:

    <ComboBox x:Name="Domain" SelectedValue="-1" Margin="186,132,0,0" Height="18" VerticalAlignment="Top" HorizontalAlignment="Left" Width="211" FontSize="11" SelectionChanged="Domain_SelectionChanged" TabIndex="4">

不过,它的工作方式与 wWinForms 中的 SelectedIndexChanged 事件的预期方式相同。我似乎无法想出一种在 wpf 中正确翻译它的​​方法。 任何帮助深表感谢。 (请忽略“stmp”错字)

最佳答案

我不确定这是否有帮助,因为每个人都在向您展示问题的代码,但根据我的经验,如果您使用数据集,您可以非常轻松地解决这个问题。如果您使用数据源选项卡,您可以使用它来创建您要使用的所有表的数据集。然后您在数据集中找到该表并将您要使用的属性拖放到组合框中。如果操作正确,应该没有问题。

关于c# - 组合框无法准确获取数据库值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20901873/

相关文章:

wpf - 无需安装 Office 即可在 Excel 中读取和写入数据

c# - 具有 int 属性的对象列表与 Int 列表相比

c# - 如何让你的 if 更短?

sql - -1 INT 列中是一个字符还是两个字符

c# - 带有 LinqToSQL 的 MVVM

c# - XAML 或 C# 代码隐藏

c# - 添加到 Authorization c# API 的 header

c# - ASP.NET MVC - 如何运行单独的进程并让用户继续正常的应用程序使用?

php - 使用 drupal 优化和压缩 mysql 数据库

mysql - 两个数据库表以两种不同的方式相关......?