我正在开展一个大项目,没有太多时间来讨论每个问题,我正在使用Windows Forms,特别是DataGridView。我刚刚添加了一个数据源,可以查询数据库中的表。将检查启用添加,删除和编辑属性。我通过拖放和添加数据源创建了这个DataGridView。当我运行程序时,查询工作正常,表格出现在我的DataGridView上,我可以在DataGridView上添加,编辑和删除行,但是当我通过SQL Server Management Studio查询表时,表中的记录仍然存在相同。可能是什么问题呢?
答案 0 :(得分:0)
数据源需要有insert / update / delete命令才能使gridview工作,听起来它只是一个select命令。
答案 1 :(得分:0)
不幸的是,您确实需要专门运行更新命令。
这是一个可能有用的链接: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.updatecommand.aspx
这里讨论如何自动保存到SQL Server,如果这是相关的: http://www.codeproject.com/Articles/12846/Auto-Saving-DataGridView-Rows-to-a-SQL-Server-Data
这就是我喜欢Entity Framework / MVC的原因之一。非常简单的数据操作:D如果您有兴趣或有空闲时间,我建议您查看。
答案 2 :(得分:0)
如果在完成表后使用dbnavigator,则应单击dbnavigator上的“保存”按钮,因为在dbnavigator中单击“保存”按钮之前,添加,编辑和删除不会保存在数据库中。
答案 3 :(得分:0)
我找到了解决方案。我添加了一个名为“保存更改”的按钮。
首先我做了初始声明:
private SqlDataAdapter da;
private DataTable dt;
private SqlCommandBuilder sqlCommandBuilder = null;
private SqlConnection Con = new SqlConnection(@"Data Source=......");
这是用于加载填充它的DataGridView的代码:
private void DataGridView_Load(object sender, EventArgs e)
{
Con.Open();
da = new SqlDataAdapter(@"SELECT * FROM tbl", Con);
sqlCommandBuilder = new SqlCommandBuilder(da);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
Con.Close();
}
这是“保存更改”按钮的代码:
private void button1_Click(object sender, EventArgs e)
{
SqlCommandBuilder local_SqlCommandBuilder = new SqlCommandBuilder(da);
local_SqlCommandBuilder.ConflictOption = System.Data.ConflictOption.OverwriteChanges;
da.UpdateCommand = local_SqlCommandBuilder.GetUpdateCommand();
da.Update(((System.Data.DataTable)this.dataGridView1.DataSource));
((System.Data.DataTable)this.dataGridView1.DataSource).AcceptChanges();
}