0

私はADO.NETが苦手なので、インターネットから取得した次のコードを使用しましたが、「位置0に行がありません。」というエラーが表示されます。ブレークポイントを使用して渡される

        DataSet ds = new DataSet();
        DataTable dt = new DataTable("ProdFromDGV");
        ds.Tables.Add(dt);
        foreach (DataGridViewColumn col in dataGridView1.Columns)
        {
            dt.Columns.Add(col.HeaderText, typeof(string));
        }

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                *dt.Rows[row.Index][cell.ColumnIndex] = cell.Value.ToString();*
            }
        }
        dt.WriteXml("table.xml");
4

2 に答える 2

0

割り当てを開始する前に、まず DataRow 型を作成し、それを DataTable に追加する必要があります。

したがって、コードは次のようになります。

DataSet ds = new DataSet();
DataTable dt = new DataTable("ProdFromDGV");
ds.Tables.Add(dt);

foreach (DataGridViewColumn col in dataGridView1.Columns)
{
    dt.Columns.Add(col.HeaderText, typeof(string));
}

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    foreach (DataGridViewCell cell in row.Cells)
    {
         // This will not work, but it's something similar to this that you need here...
         DataRow row = new DataRow();
         dt.RowCollecion.Add(row);    

         // Now you can assign to the row....
         dt.Rows[row.Index][cell.ColumnIndex] = cell.Value.ToString();
     }
}

dt.WriteXml("table.xml");

これがいくつかの助けになることを願っています..

于 2011-09-04T22:15:02.450 に答える
0

// これは機能しませんが、ここで必要なのはこれに似たものです...

変えるだけ

 DataRow row = new DataRow();

に:

DataRow row = dt.NewRow();

そしてそれはうまくいくでしょう。

于 2014-01-08T13:51:01.853 に答える