Загрузите XML в сетку внесите изменения и сохраните его обратно
Привет!
Я загружаю xml-файл в datagridview. это работает. после того, как я внес некоторые изменения, я сохраняю его обратно. это тоже работает.
теперь я добавил немного DataGridViewComboBoxCell. Теперь, когда я делаю некоторые изменения в combobox и сохраняю его обратно, эти изменения не находятся в xml. Что делать я не права?
Спасибо за вашу помощь!
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } DataTable dt = new DataTable(); DataTable tbl3 = new DataTable(); DataSet dataSet3 = new DataSet(); private void getDataSource() { //dt.Columns.Add("Parameter"); //dt.Columns.Add("Proc_key 1"); //dt.Columns.Add("Machine_ID"); //dt.Columns.Add("Active"); //dt.Rows.Add("Uniformity", "PM1", "ED2","1"); //dt.Rows.Add("Uniformity", "PM2", "ED2", "2"); //dt.Rows.Add("Uniformity_release_hot", "PM1", "ED2", "1"); string xmlFile3 = "c:\\Proj\\Epcos\\neo2000\\_versionen\\v11\\Neo2000_Host\\Epcos_Files\\XML\\SPC_Config.xml"; dataSet3.ReadXml(xmlFile3, XmlReadMode.InferSchema); //dataGridView2.DataSource = dataSet2.Tables[0]; //dataGridView3.DataSource = dataSet3.Tables[0]; } private void Form1_Load(object sender, EventArgs e) { // just fill the datatable dt getDataSource(); // table dt has four column index 0,1,2,3 dataGridView1.DataSource = dataSet3.Tables[0]; // dataGridView1.DataSource = dataSet3; tbl3 = dataSet3.Tables[0]; //DataGridViewColumn column = dataGridView1.Columns[0]; //column.Width = 200; // create Combo Box Cell PROC_KEY 1 DataGridViewComboBoxCell bc1 = new DataGridViewComboBoxCell(); //if want to add the fix value in ComboBox bc1.Items.AddRange("PM1", "PM2"); //Add new colum to grid with Combobox DataGridViewColumn cc1 = new DataGridViewColumn(bc1); dataGridView1.Columns.Add(cc1); //Add Header from old column to new column with combobox dataGridView1.Columns[4].HeaderText = dataGridView1.Columns[1].HeaderText; // set the value in combobox foreach (DataGridViewRow item in dataGridView1.Rows) { item.Cells[4].Value = item.Cells[1].Value; } //Disable old Column - so only new column with combobox will be displayed dataGridView1.Columns[1].Visible = false; dataGridView1.Columns[4].ToolTipText = "Select Module"; //---------------------------------------------------------------------------------- //Same routin for other Column (MACHINE_ID) DataGridViewComboBoxCell bc2 = new DataGridViewComboBoxCell(); //if want to add the fix value in ComboBox bc2.Items.AddRange("ED1", "ED2"); //Add new column to grid with Combobox DataGridViewColumn cc2 = new DataGridViewColumn(bc2); dataGridView1.Columns.Add(cc2); //Add Header from old Column to new column with combobox dataGridView1.Columns[5].HeaderText = dataGridView1.Columns[2].HeaderText; // set the value in combobox foreach (DataGridViewRow item in dataGridView1.Rows) { item.Cells[5].Value = item.Cells[2].Value; } //Disable old Column - so only new column with combobox will be displayed dataGridView1.Columns[2].Visible = false; dataGridView1.Columns[5].ToolTipText = "Select Equipment"; //---------------------------------------------------------------------------------- //Same routin for other Column (MACHINE_ID) DataGridViewComboBoxCell bc3 = new DataGridViewComboBoxCell(); //if want to add the fix value in ComboBox bc3.Items.AddRange("1", "2"); DataGridViewColumn cc3 = new DataGridViewColumn(bc3); dataGridView1.Columns.Add(cc3); //Add Header from old column to new colun with combobox dataGridView1.Columns[6].HeaderText = dataGridView1.Columns[3].HeaderText; // set the value in combobox foreach (DataGridViewRow item in dataGridView1.Rows) { item.Cells[6].Value = item.Cells[3].Value; } //Disable old Column - so only new column with combobox will be displayed dataGridView1.Columns[3].Visible = false; dataGridView1.Columns[6].ToolTipText = "1=active | 2=inactive"; /* if you want to get the existing value in gender column * and display them in ComboBox */ // var ss = dt.AsEnumerable() // .Select(_ => _.Field<string>("gender")). // .Distinct(); // bc.Items.AddRange(ss.ToArray()); } private void btn_saveXML_Click(object sender, EventArgs e) { string path = "Config_neu.xml"; DataSet ds = new DataSet(); ds = ((DataTable)dataGridView1.DataSource).DataSet; ds.Tables[0].WriteXml(path, System.Data.XmlWriteMode.IgnoreSchema); } } }
Что я уже пробовал:
Я поискал в интернете и проверил некоторые изменения, но ничего не работает.