0

C# で Windows フォーム アプリケーションを作成しようとしています。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

これを商業的に行っている場合は、SyncFusion/Telerik/DevExpress などの実際の WinForms フレームワークに分岐することをお勧めします。それらのほとんどには、WinForm グリッドの 1 つをデータベース テーブルに直接バインドするための一連のツールが必要です。の CRUD 操作は、基になるテーブルと直接対話します。

もう 1 つのオプションは、Entity Framework を Entity Framework DataSource コントロールと共に使用して、グリッドにバインドすることです。もう一度 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 に答える