我有一个问题,在我将数据插入到我的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();
}
我的插入代码如下所示:
void InsertConnectionDetails()
{
if (m_dbConnection != null && m_dbConnection.State == ConnectionState.Closed)
{
m_dbConnection.Open();
}
string sql = @"insert into rdpdirectory (company, server, username, password)
values (@company, @server, @username,@password)";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.Parameters.AddWithValue("@company", txtCompany.Text);
command.Parameters.AddWithValue("@server", txtServer.Text);
command.Parameters.AddWithValue("@username", txtUserName.Text);
command.Parameters.AddWithValue("@password", txtPassword.Text);
command.ExecuteNonQuery();
m_dbConnection.Close();
fillcomboBox1();
comboBox1.Refresh();
MessageBox.Show("Done");
}
我认为这个想法是再次填充数据表,组合框应该显示值?问题特别是我看到相同值的重复,但当我重新启动应用程序时,正确插入的值显示。
答案 0 :(得分:1)
问题:每次调用fillcomboBox1()
方法时,都会将项目添加到Combobox中。
所以,如果你两次调用fillcomboBox1()
方法,当你要两次添加项目时,ComboBox将会有重复的项目。
解决方案:您需要在添加项目之前清除ComboBox中的项目。
在将项目添加到comboBox1.Items.Clear()
之前,您可以使用Combobox
方法清除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();
}
完整代码:
{{1}}
答案 1 :(得分:1)
将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();
}
否则您需要清除添加新项目的项目