後でデータベースに保存される多くの「create new [xxx]」フォーム(テキストボックス、コンボボックス、datetime picekrsなどを含む)を含むプログラムがあります。そのデータを表示するには、データベースから入力された datagridview を持つ対応するフォーム "view [xxx]" を使用します。
ユーザーが datagridview のフィールドをクリックすると、データは元の「作成」フォームに送り返されます。
これまで、datagridview から行全体のデータを渡すことで、「作成」フォームのコンストラクターをオーバーロードすることでそれを行ってきました。
例:
フォームを見る:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
{
ID = dataGridView1.Rows[e.RowIndex].Cells[0].FormattedValue.ToString();
string posName = dataGridView1.Rows[e.RowIndex].Cells[1].FormattedValue.ToString();
string posDesc = dataGridView1.Rows[e.RowIndex].Cells[2].FormattedValue.ToString();
frmNewStaffPosition frm = new frmNewStaffPosition(posName, posDesc);
frm.Show();
frm.NewTypePositionAdded += new frmNewStaffPosition.AddNewTypeOfStaffPosition(frm_NewTypePositionAdded);
フォームを作成:
public frmNewStaffPosition( string pos, string desc)
{
InitializeComponent();
tbPositionName.Text = pos;
tbNewStaffPositionDecription.Text = desc;
}
これは機能しますが、特に VIEW から渡されたデータに多くの列が含まれている場合は、最善の解決策ではないと思います。選択した行の PK のみを渡し、データベースから直接 CREATE フォームに入力するなど、より洗練されたソリューションはありますか?
それが問題であれば、MySQL コネクタを介して MySQL データベースを使用します。