1

私のxmlファイルには多くの要素があり、多くの子/子子要素があるので、汎用リストとしてロードしてDGViewに表示することにしました。列は、DGviewですでに作成/カスタマイズされています。

datagridviewの値を編集して、ファイルにシリアル化する必要があります。データグリッドビューから値を取得し、ファイルにシリアル化して戻すにはどうすればよいですか。

これを使ってみDataset ds = new Dataset();ds = (Dataset) (dataGridView2.Datasource);ds.WriteXml("XML_File.xml");ましたが、nullRefExceptionErrorというエラーメッセージが表示されました。DataSet dsがnullであることがわかっているので、このエラーが発生します。

バインドにデータセットを使用したくない。xmlファイルをdatagridviewに直接バインドしたい。私のアプローチでそれは可能ですか?

このアプローチは優れていますが、元のxmlファイルのようにxmlファイルを保存することはできません。

 DataTable dt = new DataTable("Rules");

        for (int i = 0; i < dataGridView4.ColumnCount; i++)
        {
            dt.Columns.Add(dataGridView4.Columns[i].Name, typeof(System.String));
        }

        DataRow myrow;
        int icols = dataGridView4.Columns.Count;
        foreach (DataGridViewRow drow in this.dataGridView4.Rows)
        {
            myrow = dt.NewRow();
            for (int i = 0; i <= icols - 1; i++)
            {

                myrow[i] = drow.Cells[i].Value;
            }
            dt.Rows.Add(myrow);
        } 

        dt.WriteXml(@"C:\test\items.xml");

datagridviewから値をserilaize/書き込みするための助け。

4

1 に答える 1

1

私はこのアプローチを私の問題に適応させました、そしてそれはうまくいきます。

List<Test>laneConfigs = new List<Test>();//From a class
            foreach (DataGridViewRow dr in dataGridView1.Rows)
            {
                int bbbBorder = 0;
                Int32.TryParse(dr.Cells["BBor"].Value.ToString(), out bbbBorder );
                int eeee= 0;
                Int32.TryParse(dr.Cells["EBor"].Value.ToString(), out eee);

                LaneConfig laneConfig = new LaneConfig(
                    dr.Cells["ID"].Value.ToString(),
                    (TrafficLaneType)Enum.Parse(typeof(TrafficLaneType), dr.Cells["Type"].Value.ToString()),
                    new ValueWithUnit<int>(bbbBorder, "mm"),
                    new ValueWithUnit<int>(eee, "mm"));

                laneConfigs.Add(llaneConfig);
            }
于 2012-10-27T19:53:53.143 に答える