【问题标题】:refreshing comboBox after creating a new table in database在数据库中创建新表后刷新组合框
【发布时间】:2016-11-16 21:02:50
【问题描述】:

在我的代码中,我创建了一个表并将一个 CSV 文件导出到它。在我的代码的另一部分,组合框填充了我数据库中的表名。如下所示:

private void FillCombo()
    {
        try
        {

            string connectionString = "Data Source=LPMSW09000012JD\\SQLEXPRESS;Initial Catalog=Pharmacies;Integrated Security=True";
            using (SqlConnection con2 = new SqlConnection(connectionString))
            {
                con2.Open();
                string query = "SELECT * FROM INFORMATION_SCHEMA.TABLES ";
                SqlCommand cmd2 = new SqlCommand(query, con2);

                SqlDataReader dr2 = cmd2.ExecuteReader();
                while (dr2.Read())
                {
                    int col = dr2.GetOrdinal("TABLE_NAME");
                    comboBox1.Items.Add(dr2[col].ToString());
                }

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

我试图实现的是刷新组合框以反映通过上述函数执行的新添加的表。首先想到的是创建一个按钮并像这样重写上面的函数:

 private void button1_Click_1(object sender, EventArgs e)
    {
        //this is where I would just rewrite the contents of the above function
    }

正如您所猜测的,它可以工作,但值是重复的。如何在不复制现有信息的情况下刷新组合框?

【问题讨论】:

  • 先清除项目?
  • 如果你的意思是comboBox1.ResetText() 然后执行命令然后同样的结果,重复@Berkay
  • 他的意思是comboBox1.Items.Clear();——把它放在FillCombo的顶部,然后从按钮点击处理程序中调用FillCombo
  • 不,在调用方法之前,像这样清除组合框项目,combobox.Items.Clear();
  • 不客气,请看答案,还有其他选择。

标签: c# sql winforms


【解决方案1】:

正如我在 cmets 中提到的,您可以在召回方法之前清除项目,

combobox.Items.Clear();

或者你可以像这样在while循环中添加If语句,

while (dr2.Read())
{
      int col = dr2.GetOrdinal("TABLE_NAME");
      if (!comboBox1.Items.Contains(dr2[col].ToString()))
      {
          comboBox1.Items.Add(dr2[col].ToString());
      }
}

所以你不需要每次召回都清除物品。

希望有帮助,

【讨论】:

  • 您的第二个解决方案不处理已删除或重命名的表 - 如果这里有可能的话。
  • 是的,你是对的,刚刚为新添加的表格完成了。 @Blorgbeard
猜你喜欢
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多