0

私は新しいプロジェクトに取り組んでいますが、どこで混乱しているのかわかりません。私は、いくつかの新しい目が私を助け、正しい方向に私を導くことができるかもしれないことを望みました。

私のWindowsフォームにはdatagridviewとボタンがあります。ボタンは、ユーザーが選択した行を保存してデータベースに保存するためのものです。dataGridView.Selected.Rowsどこで間違っているのか知りたいのですが、現時点では貯蓄には関心がありません。datagridviewのSelectionModeプロパティを「全行選択」に変更しました。foreachループに到達すると、選択した行が分割されて指定されたオブジェクトに保存され、オブジェクト全体がテーブル/データベースに保存されます。保存する場合、ユーザーが選択した行だけでなく、datagridviewのすべての行があるようです...

前もって感謝します

   foreach (DataGridViewRow dr in dataGridView1.SelectedRows)
        {

            int i = 0;
            i = dataGridView1.SelectedRows[0].Index;

            log slog = new log();

            slog.Date = dataGridView1[0, i].Value.ToString();
            slog.Level = dataGridView1[1, i].Value.ToString();
            slog.Project = dataGridView1[2, i].Value.ToString();
            slog.Number = dataGridView1[3, i].Value.ToString();
            slog.Method = dataGridView1[4, i].Value.ToString();
            slog.Property = dataGridView1[5, i].Value.ToString();

            logEntity.logs.AddObject(slog);

        }
   logEntity.SaveChanges();
}

-

//other code tried
//for (int i = 0; i <= dataGridView1.SelectedRows.Count - 1; i++)
//var rowIndexes = dataGridView1.SelectedCells.Cast<DataGridViewCell>()
//          .Select(cell => cell.RowIndex)
//          .Distinct();
//dataGridView1.SelectedRows.Select(r => r.Index);
4

1 に答える 1

0

あなたの問題は索引付けにあると思います。iあなたがすでにあなたが望む列を持っているので、私は取り除くでしょう。

foreach (DataGridViewRow dr in dataGridView1.SelectedRows)
        {
         log slog = new log();

         slog.Date = dr.cells(0).Value.ToString();
         slog.Level = dr.cells(1).Value.ToString();
         slog.Project = dr.cells(2).Value.ToString();
         slog.Number = dr.cells(3).Value.ToString();
         slog.Method = dr.cells(4).Value.ToString();
         slog.Property = dr.cells(5).Value.ToString();

         logEntity.logs.AddObject(slog);

        }
logEntity.SaveChanges();
于 2012-08-02T18:28:02.107 に答える