winforms - 删除/添加/更新后组合框值不会刷新
问题描述
我正在使用 C# 开发一个 Windows 窗体应用程序。单个表单具有带有三个选项卡的选项卡控件。第一个选项卡是添加在 db 中更新的记录。第二个选项卡有一个绑定到数据源的组合框(数据表从 db 获取记录)。这个特定的组合框仅列出表中特定列的值,并有一个查看按钮来查看从组合框中选择的记录用户的详细信息。
第三个选项卡有一个类似的组合框,但在这里,我正在更新/删除记录。
现在,当我在第一个选项卡中添加记录时,第二个选项卡的组合框中的值不会更新(以便我可以从组合框中选择最新添加并查看详细信息)
同样在第三个选项卡中,当我编辑/删除特定记录时,组合框(在第二个选项卡和第三个选项卡中)中不会更新。
我已经关注了 SO 和其他论坛中的每一个答案,但不知何故无法让它发挥作用。
我尝试将数据源设置为 null 并清除组合框值,然后再次调用将值添加到组合框的方法,但没有用。我在下拉列表中有三条记录,删除了第一条,它仍然显示我之后同样的三个记录。
comboBox1.DataSource = null;
comboBox1.Items.Clear();
我也尝试将索引设置为 -1,但不起作用,它仍然显示相同的三个记录。
comboBox1.SelectedIndex = -1;
我尝试重置数据表并再次调用上述方法,没有奏效。
下面是数据源方法,它在表单加载时被调用。
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() 方法(注释行),但没有用。我也尝试重置数据表,要么它不起作用,要么我没有编写正确的代码。
重启应用,问题解决。我只需要在执行操作时立即更新组合框中的值的帮助,而无需重新启动应用程序。
我们无法重置表单,我知道表单应用程序中没有自动回发。当然我们已经改变了选定的索引,不完全知道它是如何工作的。
此外,除了所有这些之外,数据库实际上是一个数据库文件。
我希望我能够清楚地表达我的问题。请帮忙。
解决方案
我通过在再次点击数据源之前清除数据表解决了这个问题。
datatable.Clear();
感谢大家的宝贵意见。
推荐阅读
- azure - Azure 应用服务的 dotnet-counters 输出
- elasticsearch - has_child 和 has_parent 不返回结果
- javascript - 使用拨动开关打开/关闭光标效果?
- python - 显示带有用户输入尺寸的板?
- python - 如何从基于 openpose 3d 的两个 Vector3 坐标中获取 eulerangles?
- vb.net - Visual Basic Forms:如何使按钮单击中断先前的按钮单击?
- java - Java/JUnit 测试:测试编译,但在运行时测试类上出现“找不到符号”错误
- javascript - 将 Base64 png 信息作为 URL 中的查询字符串传递时收到错误
- python-3.x - 替换 DataFrame 列值 - 存储为列表的列行数据
- azure - Azure 应用服务通过专用链接连接到 SQL DB