我正在使用C#开发Windows窗体应用程序。单个表单具有带有三个选项卡的选项卡控件。第一个选项卡是添加要在db中更新的记录。第二个选项卡具有一个绑定到数据源的组合框(数据表从db获取记录)。这个特定的组合框仅列出表中特定列的值,并具有一个查看按钮,以查看从组合框中选择的记录用户的详细信息。
第三个选项卡有一个类似的组合框,但是在这里,我正在更新/删除记录。
现在,当我在第一个选项卡中添加记录时,值不会在第二个选项卡的组合框中得到更新(以便我可以从组合框中选择最新添加的内容并查看详细信息)
同样在第三个选项卡中,当我编辑/删除特定记录时,组合框(在第二个选项卡和第三个选项卡中)都不会更新。
在SO论坛和其他论坛中,我一直关注着每个答案,但是无论如何都无法使它起作用。
我尝试将数据源设置为null并清除组合框值,然后调用再次将值添加到组合框的方法,但没有用。我在下拉列表中有3条记录,删除了第一个记录,但仍然向我显示了相同的三个记录。
comboBox1.DataSource = null;
comboBox1.Items.Clear();
我也尝试将索引设置为-1,但没有用,它仍然显示相同的三个记录。
comboBox1.SelectedIndex = -1;
我尝试重置数据表并再次调用上述方法,但没有用。
下面是数据源方法,它在Form加载时被调用。
public void pageload()
{
using (SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\PSDB.mdf;Integrated Security=True;Connect Timeout=30"))
try
{
string cmdstr = "Select Name from PasswordSafe where Username= @Username";
SqlCommand cmd = new SqlCommand(cmdstr, con);
cmd.Parameters.AddWithValue("@Username", Login.SetValueForText1);
SqlDataAdapter adp = new SqlDataAdapter(cmd);
//DataTable dt = new DataTable();
con.Open();
//DataSet DS = new DataSet();
adp.Fill(dt);
DataRow row = dt.NewRow();
row[0] = "";
//row[1] = "Please select";
dt.Rows.InsertAt(row, 0);
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "Name";
comboBox2.DataSource = dt;
comboBox2.DisplayMember = "Name";
con.Close();
}
catch
{
}
}
这是修改组合框值的删除按钮(仅举一个例子,我也有添加按钮和编辑按钮)
private void button7_Click(object sender, EventArgs e)
{
deletepassword();
comboBox1.DataSource = null;
comboBox1.Items.Clear();
comboBox2.DataSource = dt;
comboBox2.DisplayMember = "Name";
//pageload();
}
我也尝试再次调用pageload()方法(注释行),但没有用。我也尝试重置数据表,要么它不起作用,要么我没有编写正确的代码。
重新启动应用程序即可解决问题。我只需要在执行操作时立即更新组合框中的值的帮助,而不必重新启动应用程序。
我们无法重置表单,我知道表单应用程序中不存在自动回发功能。 当然,我们已经选择了“更改索引”,不完全了解它的工作原理。
此外,实际上,数据库实际上是一个数据库文件。
我希望我能够清楚地阐明我的问题。请帮助。
答案 0 :(得分:0)
我通过在再次点击数据源之前清除数据表来解决此问题。
datatable.Clear();
感谢大家的宝贵意见。