DataGridViewでインクリメント値を入力する
DataGridViewでDBのデータを操作する場合で、オートインクリメント列以外で
規定値で自動採番したいという要求がある場合。
下記の例の場合は、新規レコードには現在のレコード数+1の値が入る。
private void dataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e) { da.SelectCommand = new NpgsqlCommand ( "select" + " id" + " from" + " tbl" + " where n_id=:n_id", m_conn ); if (cmb_n_id.SelectedItem == null) { da.SelectCommand.Parameters.Add(new NpgsqlParameter("n_id", NpgsqlTypes.NpgsqlDbType.Integer, 0, "n_id", ParameterDirection.Input, false, 0, 0, DataRowVersion.Current, DBNull.Value)); } else { DataRowView row = (DataRowView)cmb_n_id.SelectedItem; da.SelectCommand.Parameters.AddWithValue("n_id", row["n_id"]); } if (Cntds.Tables["tbl"] != null) Cntds.Tables["tbl"].Clear(); da.Fill(Cntds, "tbl"); if (0 != Cntds.Tables["tbl"].Rows.Count) { //e.Row.Cells["id"].Value = Cntds.Tables["tbl"].Rows.Count + 1; dataGridView1.Rows[e.Row.Index].Cells["id"].Value = e.Row.Index + 1; } }