2016年4月6日 星期三

複製 DataGridView 至 DataTable

變更DataGridView儲存格內容,也要同時變更DataTable內容,
因此需要將整個DataGridView欄位及資料複製到DataTable。




程式範例


// foreach迴圈範例
public static DataTable DGVtoDT(DataGridView dgv)
{
        DataTable dt = new DataTable ();
        foreach (DataGridViewColumn col in dgv.Columns) // 循環dgv中行數量
        {
                DataColumn dc = new DataColumn(col.Name.ToString());
                dt.Columns.Add(dc); // 加入column
        }

        foreach (DataGridViewRow row in dgv.Rows) // 循環dgv中列數量
        {
                DataRow dr = dt.NewRow();
                foreach (DataGridViewCell cell in row.Cells) // 循環dgv.Rows中儲存格數量
                {
                        dr[cell.ColumnIndex]=cell.Value; // 存入cell資料
                }
                dt.Rows.Add(dr); // 加入row
        }

        return dt;
}

// for迴圈範例
public static DataTable DGVtoDT(DataGridView dgv)
{
        DataTable dt = new DataTable ();

        for (int i = 0; i < dgv.Columns.Count; i++) // 循環dgv中行數量
        {
                DataColumn dc = new DataColumn (dgv.Columns[i].Name.ToString());
                dt.Columns.Add(dc); // 加入column
        }

        for (int i = 0; i < dgv.Rows.Count; i++) // 循環dgv中列數量
        {
                DataRow dr = dt.NewRow();
                for (int j = 0; j < dgv.Columns.Count; j++) // 循環dgv.Rows中儲存格數量
                {
                        dr[j] = dgv.Rows[i].Cells[j].Value.ToString(); // 存入cell資料
                }
                dt.Rows.Add(dr); // 加入row
        }

        return dt;
}


參考資料

沒有留言:

張貼留言