我正在尝试在C#中创建一个Windows窗体应用程序。我试图删除Gridview中的特定行并将更改推送到数据库中。此删除会删除该行。我想要做的就是将这个更新的gridview推送到数据库中。
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
string ind = e.RowIndex.ToString();
int myint = int.Parse(ind);
dataGridView1.Rows.Remove(dataGridView1.Rows[myint]);
}
这是我用于显示数据库的代码。
using (SqlConnection MyConn = new SqlConnection("Data Source=LENOVO\\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=SampleData"))
{
string query = "SELECT * from dbo. userpass";
SqlCommand cmd = new SqlCommand(query, MyConn);
try
{
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataTable dbdataset = new DataTable();
sda.Fill(dbdataset);
BindingSource bSource = new BindingSource();
bSource.DataSource = dbdataset;
dataGridView1.DataSource = bSource;
sda.Update(dbdataset);
}
catch
{
}
}
答案 0 :(得分:1)
获取您正在使用的代码来填充函数中的datagrid并调用该函数并在调用函数之前刷新网格。
dataGridView1.Rows.Refresh();
答案 1 :(得分:0)
如果您在商业上这样做,我建议您选择实际的WinForms框架,如SyncFusion / Telerik / DevExpress等。他们中的大多数都应该有一套工具来直接将其WinForm网格绑定到数据库表,并让所有CRUD操作直接与基础表交互。
另一种选择是使用实体框架,实体框架数据源控件,然后绑定到网格,CRUD操作应该再次流到数据库,(但我建议你使用这种方法使用WPF控件)。
在一天结束时,不要重新发明轮子。
答案 2 :(得分:0)
您正在使用BindingSource,所以它只是一个案例:
bSource.RemoveCurrent();
同时使用ExecuteNonQuery方法从数据库中删除它:
.CommandText = "DELETE FROM YourTable WHERE Identifier =" & PrimaryKey
答案 3 :(得分:0)
使用DELETE SQL查询删除行的数据并通过再次调用数据库连接方法刷新网格,您将获得更新的代码