gpt4 book ai didi

c# - .NET Winforms BindingNavigator 添加和删除按钮不起作用

转载 作者:行者123 更新时间:2023-11-30 23:28:19 26 4
gpt4 key购买 nike

在我的 VS2015 Winforms 应用程序中,我创建了一个 DataGridView 以及一个 BindingNavigator。以下代码成功显示了 DataGridView 中的数据,我可以使用 BindingNavigator 导航数据行。但是当我尝试使用 BindingNavigator 上的内置添加/删除按钮添加/删除一行时,数据库不会反射(reflect)这些更改。

代码:

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
SqlDataAdapter dadapter;
DataSet dset;
BindingSource bs;
string connstring = "database=emp;server=.;user=sa;password=wintellect";
private void Form2_Load(object sender, EventArgs e)
{
dadapter = new SqlDataAdapter("select * from emp_detail", connstring);
dset = new DataSet();
dadapter.Fill(dset);
bs = new BindingSource();
bs.DataSource = dset.Tables[0].DefaultView;
bindingNavigator1.BindingSource = bs;
dataGridView1.DataSource = bs;
}
}

最佳答案

您忘记将更改保存到数据库。当您添加、删除或编辑 DataGridView 的项目时,所有更改都是在内存中的基础数据源中进行的,并且要持久保存更改,您应该将这些更改保存到数据库中。

您可以使用 SqlCommandBuilderSqlDataAdapter 创建有效的 InsertCommandDeleteCommandUpdateCommand , 然后调用 UpdateDataTable 的更改保存到数据库的适配器方法:

SqlDataAdapter adapter;
DataSet table;
BindingSource bs;

private void Form1_Load(object sender, EventArgs e)
{
var connection = "Your Connection String";
var command = "SELECT * FROM SomeTable"
adapter = new SqlDataAdapter(command, connstring);
this.components.Add(adapter);
table= new DataTable();

//This line creates valid insert, update and delete commands for data adapter
var commandBuilder = new SqlCommandBuilder(myTableAdapter);

dadapter.Fill(table);
bs = new BindingSource();
bs.DataSource = table;
bindingNavigator1.BindingSource = bs;
dataGridView1.DataSource = bs;
}

private void SaveButton_Click(object sender, EventArgs e)
{
this.Validate();
this.dataGridView1.EndEdit();
adapter.Update(table);
}

注意:我做 this.components.Add(adapter); 的原因是我们不应该忘记处理 SqlDataAdapter .通过将其添加到表单的 components 容器中,它将被自动处理。

如果您在没有设计器的情况下创建表单,您可能没有components 容器。在这种情况下,通过覆盖表单的 Dispose 或在 Closing 事件中手动处理适配器。

关于c# - .NET Winforms BindingNavigator 添加和删除按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36068717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com