0

我正在尝试用 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
            {

            }

        }
4

4 回答 4

1

获取您用于在函数中填充数据网格的代码并调用该函数并在调用该函数之前刷新网格。

dataGridView1.Rows.Refresh();
于 2013-08-31T10:12:33.607 回答
0

如果您在商业上这样做,我建议您购买一个实际的 WinForms 框架,如 SyncFusion/Telerik/DevExpress 等。他们中的大多数应该有一套工具来直接将他们的一个 WinForm 网格绑定到数据库表,并且拥有所有的 CRUD 操作直接与基础表交互。

另一种选择是使用带有实体框架数据源控件的实体框架,然后绑定到网格,CRUD 操作应该再次流向数据库(但是我建议您使用这种方法的 WPF 控件)。

归根结底,不要重新发明轮子。

于 2013-08-31T10:25:48.243 回答
0

使用 DELETE SQL 查询删除行的数据并通过再次调用数据库连接方法刷新网格,您将获得更新的代码

于 2013-08-31T14:01:22.450 回答
0

您正在使用 BindingSource,因此它只是以下情况:

bSource.RemoveCurrent(); 

同时使用ExecuteNonQuery方法将其从数据库中删除:

.CommandText = "DELETE FROM YourTable WHERE Identifier =" & PrimaryKey
于 2013-08-31T10:59:52.550 回答