-3

テーブルAttendanceのコンテンツを表示するためのdataGridViewを含むフォームがあります

TagID      SessionID       ScanningTime
---------------------------------------
4820427      Test1       14/08/2013 18:12

ユーザーは、既存のレコードを変更したり、新しいレコードを追加したりできます。

データを編集した後の出席表の例:

TagID      SessionID       ScanningTime
---------------------------------------
4820000      Test1       14/08/2013 18:12
0000001      Test2       15/08/2012 17:00

ボタンをクリックした後、ユーザーが DGV から SQL サーバーに変更を保存できるようにしたいのですが、これを実現する方法がわかりません。DGV を使用する場合、DataSet や TableAdapter は使用しないことに注意してください。

私のコード:

private void UpdateBtn_Click(object sender, EventArgs e)
        {
            foreach (var row in dataGridView1.Rows)
            {

            string ConnStr = "Data Source=DUZY;Initial Catalog=AutoRegSQL;Integrated Security=True";

            SqlConnection MyConn = new SqlConnection(ConnStr);
            MyConn.Open();


            string query = @"UPDATE Attendance" +
               " SET TagID= @tagNo, SessionID= @sessionNo, ScanningTime= @scantime ";

            SqlCommand command = new SqlCommand(query, MyConn);

            command.Parameters.Add("tagNo", SqlDbType.Int).Value = //HOW TO GET VALUE FROM row.TagID column?
            command.Parameters.Add("sessionNo", SqlDbType.Char).Value = //HOW TO GET VALUE FROM row.SessionID column?
            command.Parameters.Add("scantime", SqlDbType.DateTime2).Value = //HOW TO GET VALUE FROM row.ScanningTime column?

            SqlDataAdapter adapter = new SqlDataAdapter(command);

            adapter.Fill(queryResult);



            RoomActiveSessionForm.DGVSetDataSouce(queryResult);

            MyConn.Close();

            }
        }
4

1 に答える 1

0

row.Cells[int index].Value または row.Cells[string columnName].Value を使用します。http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow.cells.aspxを参照してください。

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
     int tagId = Convert.ToInt32(row.Cells["TagID"].Value);
}
于 2013-08-15T19:05:03.023 に答える