0

DataSet への読み込みを介して、XML ファイルから DataGridView を作成しました。ただし、データをロードした後、次のエラーが発生するため、実行時に行を挿入できなくなりました。

「コントロールがデータバインドされている場合、データグリッドビューの行コレクションに行をプログラムで追加することはできません」

    private void LoadBtn_Click(object sender, EventArgs e)
    {
        DTable.Clear();
        DTable.Reset();

        var ds = new DataSet();
        ds.ReadXml(@"C:\setup.xml", XmlReadMode.ReadSchema);

        foreach (DataGridViewColumn col in dataGridView1.Columns)
        {
            DTable.Columns.Add(col.Name);
            col.DataPropertyName = col.Name;
        }

        //dataGridView1.AutoGenerateColumns = false;
        dataGridView1.DataSource = ds.Tables["TableName"];
    }

私が考える問題の概念を理解しています。XML ファイルに 7 行しか含まれておらず、DataGridView のソースである場合、それは 7 行にバインドされ、それ以上追加することはできませんが、ユーザーがこれを動的に変更して XML を再保存できるようにしたいと考えています。行の問題を「ロック解除」する方法ではなく、再保存する方法を知っていれば問題ありません。

どうもありがとう、トム

4

2 に答える 2

0

DataRow次のように、最初に に追加してから に保存してXMLから再入力しないのはなぜですかDataGridView

に追加DataRow:

DataRow dr = ds.Tables["TableName"].NewRow(); 
dr["FieldName1"] = value1; 
dr["FieldName2"] = value2;

ds.Tables["TableName"].Rows.Add(dr);

保存先XML:

ds.WriteXml(@"C:\setup.xml");

再入力DataGridView:

dataGridView1.DataSource = ds.Tables["TableName"];

DataSetただし、これは、名前付きds(この場合) がグローバルに宣言されていることを前提としています。

于 2014-08-07T12:07:35.840 に答える