[英]C# Databound Listbox Refresh
我已经检查了有关该主题的答案,但是我仍然不知道为什么这不起作用! 请帮忙!
private void btnAdd_Click(object sender, EventArgs e)
{
SqlCeCommand insTitle = new SqlCeCommand("Insert into Titles(Title) values('" + txtAddTitle.Text +"')");
insTitle.Connection = dbConnection;
try
{
if (dbConnection.State == ConnectionState.Closed) { dbConnection.Open(); }
insTitle.ExecuteNonQuery();
this.hRDataSet.AcceptChanges();
this.titlesTableAdapter.Update(this.hRDataSet);
this.tableAdapterManager.UpdateAll(this.hRDataSet);
lstTitles.BeginUpdate();
lstTitles.DataSource = titlesBindingSource;
lstTitles.DisplayMember = "Title";
lstTitles.ValueMember = "Title_ID";
lstTitles.EndUpdate();
}
catch (Exception insErr)
{
MessageBox.Show(insErr.Message);
}
}
列表框“ lstTitles”将不会刷新,并且不会显示添加的项目,即使它们已在数据库中!
DataAdapter
的Update
方法用于使用DataSet
所做的更改来更新数据库。 你需要在这里做的是相反的:你需要更新DataSet
与从数据库中修改的数据,所以你应该使用Fill
,没有Update
。
无论如何,您的方法不是最佳的。 由于要使用数据集,因此应将新值添加到DataSet
的适当表中,然后使用Update
方法更新数据库。 列表框将自动获取更改。
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
// Add a row to the DataTable
DataRow row = hRDataSet.Titles.NewRow();
row["Title"] = txtAddTitle.Text;
hRDataSet.Titles.Rows.Add(row);
// Update the database
this.titlesTableAdapter.Update(this.hRDataSet);
// That's it, you're done ;)
}
catch (Exception insErr)
{
MessageBox.Show(insErr.Message);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.