来自mysql查询的Combobox项每秒刷新一次

时间:2013-11-15 12:58:37

标签: c# mysql timer combobox duplicates

我有组合框项目来显示抽奖日期。项目是从mysql数据导入的。我使用这段代码来获取它们:

        DataTable dateDraw = new DataTable("dateDraw");
        using (MySqlConnection sqlConn = new MySqlConnection(@"datasource=localhost;port=3306;username=root;password=toor"))
        {
            using (MySqlDataAdapter da = new MySqlDataAdapter("SELECT date FROM sqldata.datedraw WHERE active='Yes'", sqlConn))
            {
                da.Fill(dateDraw);
            }
        }
        foreach (DataRow da in dateDraw.Rows)
        {
            comboBox1.Items.Add(da[0].ToString());
        }

我需要每秒刷新一次。所以我创建了计时器并将代码放入计时器。将timer.enable设置为true,将interval设置为1000.刷新部分工作正常。但是我在每个mysql查询中都会得到多个具有相同结果的项目。

如果mysql第一个查询是例如:

12.9.2013
19.9.2013
16.9.2013

第二个查询重复它:

12.9.2013
19.9.2013
16.9.2013
12.9.2013
19.9.2013
16.9.2013

和第三个查询:

12.9.2013
19.9.2013
16.9.2013
12.9.2013
19.9.2013
16.9.2013
12.9.2013
19.9.2013
16.9.2013

等等。

如何删除重复的结果?

谢谢。

我正在寻找我会理解的解决方案,因为我是一个菜鸟。谢谢!

3 个答案:

答案 0 :(得分:2)

添加

  comboBox1.Items.Clear();

  foreach (DataRow da in dateDraw.Rows)
    {
        comboBox1.Items.Add(da[0].ToString());
    }

答案 1 :(得分:2)

你可以在添加项目之前清除comboBox,我错过了什么吗?

comboBox1.Items.Clear();

答案 2 :(得分:0)

您可以使用

,而不是逐行添加它们
comboBox1.ItemsSource = dateDraw.Rows

您可以单独设置这些行中的哪些字段应该用于显示,并分别设置为(键)值设置combobox1.DisplayMembercombobox1.Datamember

除此之外,作为一个用户,如果我从组合框中选择一些东西,并且组合框变空并重新填充,我可能会对程序员产生同性恋意图,可能会让我的选择消失 - 如果我设法做出选择所有!