3
    private void dataGridView1_CellContentClick
    (object sender,DataGridViewCellEventArgs e) 
    {
        int i,j;
        i = dataGridView1.CurrentCell.RowIndex;
        j = dataGridView1.CurrentCell.ColumnIndex;
        txtcellvalue.Text = dataGridView1.Rows[i].Cells[j].Value.ToString(); 
    }

    private void Setvaluebutton_Click(object sender, EventArgs e)
    {
        int i = 0;
        //foreach(DataGridViewRow datagridviewrow in dataGridView1.Rows)
        //{
            i = dataGridView1.SelectedCells[0].RowIndex;
            string study = dataGridView1.Rows[i].Cells[2].Value.ToString(); 
            txtcellvalue.Text = dataGridView1.Rows[i].Cells[3].Value.ToString();
            txtcellvalue1.Text = dataGridView1.Rows[i].Cells[4].Value.ToString();
            string unit = dataGridView1.Rows[i].Cells[5].Value.ToString();
            i = i + 1;
            DialogResult dr = MessageBox.Show
            ("Would like to update the click yes!!",
             "values", MessageBoxButtons.YesNo);
            if (dr == DialogResult.Yes)
            {
                db.OpenDB();
                string query = "Update [table] set [status]=" + study + ",
                [limit]='" + txtcellvalue.Text + "' ,[limit2]='" + txtcellvalue1.Text
                 + "',[unit]='" + unit + "' where [tno]=" + i + ";";
                db.Update(query);
                DatagridviewMethod();
                db.CloseDB();

            }
            else
            {
                DatagridviewMethod();
            }
      // }                         

    }

ここで、datagridview にすべてのデータベース テーブルの値を表示しようとしています。datagridview にすべての値を表示した後、datagridview のセル値を置き換えようとしましたが、別の値を編集して置き換えることができますが、更新中に 1 行のみが更新されますdatagridviewで一度に値と他のすべての行(選択されたすべての行)の値ではありません。何か提案をお願いします。

4

1 に答える 1

4

コードを正しく理解していれば、そのメソッドを実行するたびに、変数 [i] が更新されないため、1 つの行でのみ実行されます。複数の行を選択した場合でも、 [i] は常に現在の行または「アクティブな」行を指すため (コードのどこでも変更されることはありません)、同じままです。これを回避するには、次のように SelectedRows コレクションを反復処理してみてください。

foreach (DataGridViewRow dgvrow in dataGridView1.SelectedRows) {
    string study = dgvrow.Cells[2].Value.ToString();
    txtcellvalue.Text = dgvrow.Cells[3].Value.ToString();
    txtcellvalue1.Text = dgvrow.Cells[4].Value.ToString();
    string unit = dgvrow.Cells[5].Value.ToString();

    if (MessageBox.Show("Would like to update the click yes!!",
        "values", MessageBoxButtons.YesNo) ==
        System.Windows.Forms.DialogResult.Yes) {
            // ETC...
    }
    else {  }
}
于 2012-09-28T19:26:19.750 に答える