1

私は c# の初心者です。いくつかの行と列を追加したものdataGridView1を aに作成しました ( andを使用せず)。次に、データをxml ファイルに送信する必要があります。そのボタンをクリックするたびにxmlファイルが更新されるはずです。(またはテーブル)を使用せずにこれを行う必要があります。以下のコードを試しました(動作しませんFormDataSetDatatabledataGridView1Datatable

OnButtonClick

        XmlTextWriter newXml = new XmlTextWriter("d:/newXML.xml", Encoding.UTF8);
        DataSet ds = new DataSet(dataGridView1.Rows.ToString()); /* May be I am missing something here */
        ds.WriteXml(newXml);

xml ファイルは正常に作成されましたが、その中に表示<System.Windows.Forms.DataGridViewRowCollection />されています。

BindingSource bs = (BindingSource)dataGridView1.DataSource;前に追加するDataSetと、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。

注: xml ファイルが自分のものでない場合は、作成する必要があります。

前もって感謝します。

4

2 に答える 2

0

をインスタンス化して、コントロールDataTableから入力できます。dataGridView1

        DataTable table = new DataTable("Customers");
        // copy the correct structure from datagridview to the table
        foreach (DataGridViewColumn column in dataGridView1.Columns)
        {
            table.Columns.Add(column.Name, typeof(string));
        }

        // populate the datatable from datagridview
        for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++)
        {
            table.Rows.Add();
            for (int columnIndex = 0; columnIndex < dataGridView1.Columns.Count; columnIndex++)
            {
                table.Rows[rowIndex][columnIndex] = dataGridView1[rowIndex, columnIndex].Value;
            }
        }

次に、残りのコードを続行します。

    DataSet ds = new DataSet();
    ds.Tables.Add(table);
    ds.WriteXml("d:/newXML.xml", System.Data.XmlWriteMode.IgnoreSchema);
于 2012-09-26T10:27:09.783 に答える
0

C#の世界へようこそ!

問題を解決するための良いスタートは、Serializationを使用することです。これは、オブジェクトを XML ファイルに保存する必要がある場合に非常に便利です。

DataGridを満たすオブジェクトをどのように保存するかはわかりませんが、可能であれば、それらをシリアル化可能にし、Load()、Save() などのメソッドを追加する必要があります。

詳細については、これをお読みください: MSDN - シリアル化

これを行う方法に関する多くの情報が見つかります。開始時に実装するのは少し厳しいですが、道路でさらに多くの時間を節約できます!

それが役立つことを願っています。

編集1:

あなたの編集を見たところ、オブジェクトを使用していないようで、単なる挿入だけです。その場合、私の解決策は役に立ちませんが、より複雑な状況で考えてみてください...

于 2012-09-26T10:21:52.290 に答える