C# 通过SQL命令插入的数据在comboBox1中未正确显示

C# 通过SQL命令插入的数据在comboBox1中未正确显示,c#,.net,winforms,combobox,C#,.net,Winforms,Combobox,我有一个问题,在我将数据插入SQL Lite数据库后,combobox1无法刷新以正确显示数据。插入数据后,我只需调用以下方法: void fillcomboBox1() { if (m_dbConnection != null && m_dbConnection.State == ConnectionState.Closed) { m_dbConnection.Open(); } SQLiteDataAdapter da = n

我有一个问题,在我将数据插入SQL Lite数据库后,
combobox1
无法刷新以正确显示数据。插入数据后,我只需调用以下方法:

void fillcomboBox1()
{
    if (m_dbConnection != null && m_dbConnection.State == ConnectionState.Closed)
    {
        m_dbConnection.Open();
    }

    SQLiteDataAdapter da = new SQLiteDataAdapter("select * from rdpdirectory order by company asc", m_dbConnection);

    DataTable dt = new DataTable();

    da.Fill(dt);

    for (int i = 0; i < dt.Rows.Count; i++)
    {
        comboBox1.Items.Add(dt.Rows[i]["Company"]);
    }
    m_dbConnection.Close();
}

我认为这个想法是再次填充数据表,组合框应该显示值?具体的问题是,我看到了相同值的重复项,但当我重新启动应用程序时,正确插入的值会显示出来。

问题:每次调用
fillcomboBox1()
方法时,您都会将项目添加到Combobox中

comboBox1.Items.Clear();
因此,如果您两次调用
fillcomboBox1()
方法,ComboBox将在您两次添加项目时包含重复的项目

解决方案:在添加项目之前,您需要清除组合框中的项目。 在向组合框添加项目之前,可以使用
comboBox1.Items.Clear()
方法从组合框中清除所有现有项目

将以下语句添加到
fillcomboBox1()
方法中

comboBox1.Items.Clear();
完整代码:

void fillcomboBox1()
{
comboBox1.Items.Clear();// <---Add this statement
if (m_dbConnection != null && m_dbConnection.State == ConnectionState.Closed)
{
    m_dbConnection.Open();
}

SQLiteDataAdapter da = new SQLiteDataAdapter("select * from rdpdirectory order by company asc", m_dbConnection);

DataTable dt = new DataTable();

da.Fill(dt);

for (int i = 0; i < dt.Rows.Count; i++)
{
    comboBox1.Items.Add(dt.Rows[i]["Company"]);
}
m_dbConnection.Close();
}
void fillcomboBox1()
{

comboBox1.Items.Clear();//如下绑定comboBox1

void fillcomboBox1()
{
    // your code .....

    da.Fill(dt);
    comboBox1.DataSource = dt; // set DataSource  as your DataTable
    comboBox1.DisplayMember = "Company"; // you only need to set the display column name
    m_dbConnection.Close();
}
否则,您需要在添加新项目之前清除这些项目