0

SQLテーブルの個々のレコードを更新しようとしています。そのため、DataGridViewそのテーブルを表示し、テーブル内の行を選択して[更新]ボタンをクリックすると、新しい[更新]Formが開きます。

メインフォームはDataRow行パラメータをnewFormに渡し、更新が終了すると、行はメインフォームに返されます。コード例は、メインフォームで次のようになります。

private void btnUpdateUser_Click(object sender, EventArgs e)
{
  //Some code to extract DataRow
  FormUpdateUsers updateUser = new FormUpdateUsers(row, new Action<DataRow>(onUserUpdated));
  updateUser.Show();
}

更新フォームが更新を完了すると、以下に示すように、アクションが呼び出され、行がメインフォームに戻ります。

public partial class FormUpdateUsers : Form
{

private DataRow row;
private Action<DataRow> action;

public  FormUpdateUsers(DataRow row, Action<DataRow> action)
    {
        InitializeComponent();

        this.row = row;
        this.action = action;
    }

    private void btnConfirm_Click(object sender, EventArgs e)
    {
    //Some code for updatin a database
    action.Invoke(row);
    }
}

問題は、返された行バスクを古い行バスクに挿入しDataGridViewて置き換える方法ですか?助言がありますか?

private void onUserUpdated(DataRow row)
{
// Update DataGridView?
}
4

1 に答える 1

0

どの行かを知る必要があります。dgv (およびデータ行) 内に既に id 列がありますか? もしそうなら、あなたはすることができます:

    private void onUserUpdated(DataRow row)
    {
        int idColumn = int.Parse(row["IdColumn"].ToString());
        foreach (DataGridViewRow DGVrow in dataGridView1.Rows)
        {
            if (idColumn == int.Parse(DGVrow.Cells["IdColumn"].Value.ToString()))
            {
                for (int i = 0; i < row.ItemArray.Length; i++)
                {
                    dataGridView1[i, DGVrow.Index].Value = row.ItemArray[i].ToString();
                }
            }
        }
    }
于 2012-08-25T15:49:33.577 に答える