このような問題を解決していただけませんか: datagridview と SQL データベースの 2 つのフォームがあります。最初のフォームのロード イベントで、ストアド プロシージャ (選択クエリ) を使用して SQL データベースからデータを選択しています。
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("PROC001", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
datagridview.DataSource = dt;
その後、dt.DefaultView.Filter = .... を使用して datagridview をフィルタリングまたはソートし、フィルタリングされた行のみをグリッドに表示できます。CellMouseDoubleClick イベントで、2 番目の Form2 が表示されます。このフォームでは、Button1 をクリックしてデータベースの値を更新し、その後、選択した datagridview 行を更新したいと考えています。私の質問は次のとおりです。
1) datagridview で選択した行のみを更新し、すべての datagridview の塗りつぶしに対してストアド プロシージャを再度実行しないようにするにはどうすればよいですか。
2) データグリッドビューは既にフィルター処理されているため、手順を再度実行すると、フィルターが消えてしまいます。どうすればこれを回避できますか?
3) Form2 で、選択したフィールドとして「選択クエリ」に含まれていないデータベース値を更新していますが、この値はこのクエリに影響します。例:
SELECT Name, SecondName FROM tUsers
WHERE id = (SELECT DISTINCT id FROM tProcedures WHERE Code = 'First')
私のデータグリッドビューでは Name と SecondName を確認できますが、Form2 ではtProcedures
データベース テーブルのコードを更新しています。したがって、更新後、選択した行と現在のフィルターのみで、datagridview に新しいデータを表示したいと考えています。すべてのデータを datagridview に再度 SELECT したくないので、フィルターを壊しました。
単一の行を更新することは可能ですか? いくつか例を挙げていただけますか?