Добавление элемента в DataGridView нажатием кнопки с помощью C#

Я пишу программу для управления всеми клиентами, которые есть в нашей компании. у меня есть DataGridView где каждый клиент должен отображать. И прямо на DataGridView У меня есть несколько текстовых полей для отображения информации о каждом клиенте и для добавления нового клиента. И я получил кнопку "Добавить клиента". Поэтому, если я наберу какой-нибудь случайный текст в текстовые поля и нажму "Добавить клиента", он должен добавить нового клиента к DataGridView, И если я перезапущу программу, каждый клиент все равно должен быть сохранен. Поэтому я сохраняю информацию о каждом клиенте в XML-файле.

Может ли кто-нибудь помочь мне или дать подсказку, как я могу добавлять клиентов в DataGridView нажав кнопку? Я получил этот код для сохранения в файл XML:

public partial class Form1 : Form
    {
        const string folder = @"C:\Users\Römel\Desktop\Save";
        const string basename = "save.xml";
        string filename = folder + "\\" + basename;

        public Form1()
        {
            InitializeComponent();
            if (Directory.Exists(folder))
            {
                if (File.Exists(filename))
                {
                    DataSet flatDataSet = new DataSet();
                    flatDataSet.ReadXml(filename);
                    DataTable table = flatDataSet.Tables[0];
                    dataGridKunden.DataSource = table;
                }

                dataGridKunden.Columns["KundenNr"].Visible = false;
                dataGridKunden.Columns["Adresse"].Visible = false;
                dataGridKunden.Columns["Ort"].Visible = false;
                dataGridKunden.Columns["Telefon"].Visible = false;
                dataGridKunden.Columns["Mail"].Visible = false;

                dataGridKunden.ScrollBars = ScrollBars.None;
            }
        }

        private void btnAddKunde_Click(object sender, EventArgs e)
        {
            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }
            if (!File.Exists(filename))
            {
                File.Create(filename);
            }
            XmlTextWriter xwriter = new XmlTextWriter(filename, Encoding.Unicode);
            xwriter.WriteStartDocument();
            xwriter.WriteStartElement("Kundenverwaltung");
            xwriter.WriteStartElement("KundenNr");
            xwriter.WriteString(txtKundenNr.Text);
            xwriter.WriteEndElement();
            xwriter.WriteStartElement("Nachname");
            xwriter.WriteString(txtKundeNachname.Text);
            xwriter.WriteEndElement();
            xwriter.WriteStartElement("Vorname");
            xwriter.WriteString(txtKundeVorname.Text);
            xwriter.WriteEndElement();
            xwriter.WriteStartElement("Adresse");
            xwriter.WriteString(txtKundeAdresse.Text);
            xwriter.WriteEndElement();
            xwriter.WriteStartElement("Ort");
            xwriter.WriteString(txtKundeOrt.Text);
            xwriter.WriteEndElement();
            xwriter.WriteStartElement("Telefon");
            xwriter.WriteString(txtKundeTel.Text);
            xwriter.WriteEndElement();
            xwriter.WriteStartElement("Mail");
            xwriter.WriteString(txtKundeMail.Text);
            xwriter.WriteEndElement();
            xwriter.WriteEndDocument();
            xwriter.Close();
        }
    }

Кнопка "Добавить клиента" называется "btnAddKunde".

Заранее спасибо.

ура

4 ответа

Решение

Добавьте эти строки кода в событие нажатия кнопки в последнюю очередь:

if (File.Exists(filename))
{
      DataSet flatDataSet = new DataSet();
      flatDataSet.ReadXml(filename);
      DataTable table = flatDataSet.Tables[0];
      dataGridKunden.DataSource = table;
}

Однако ваша версия XmlTextWriter будет перезаписывать файл XML. Таким образом, при нажатии на кнопку вы увидите только последнюю добавленную строку. Вместо этого вы можете использовать приведенный ниже код в вашем событии нажатия кнопки:

private void btnAddKunde_Click(object sender, EventArgs e)
    {
        if (!Directory.Exists(folder))
        {
            Directory.CreateDirectory(folder);
        }
        if (!File.Exists(filename))
        {
            using (File.Create(filename))
            {}
        }

        XElement xmlNode = new XElement("Kundenverwaltung",
                                        new XElement("KundenNr", txtKundenNr.Text),
                                        new XElement("Nachname", txtKundeNachname.Text),
                                        new XElement("Vorname", txtKundeVorname.Text),
                                        new XElement("Adresse", txtKundeAdresse.Text),
                                        new XElement("Ort", txtKundeOrt.Text),
                                        new XElement("Telefon", txtKundeTel.Text),
                                        new XElement("Mail", txtKundeMail.Text)
            );
        XElement xmlFile;
        try
        {
            xmlFile = XElement.Load(filename);
            xmlFile.Add(xmlNode);

        }
        catch (XmlException)
        {
            xmlFile = new XElement("Customers", xmlNode);
        }
        xmlFile.Save(filename);
        DataSet flatDataSet = new DataSet();
        flatDataSet.ReadXml(filename);
        DataTable table = flatDataSet.Tables[0];
        dataGridKunden.DataSource = table;
    }

Вам нужно использовать класс XMLDocument для извлечения данных из файла XML

сделать что-то вроде этого:

XDocument xmlDoc = XDocument.Load("People.xml");

xmlDoc.Element("employee").Add(new XElement("Person", new XElement("Name", txtName.Text),
new XElement("City", txtCity.Text), new XElement("Age", txtAge.Text)));
dataGridKunden.Rows.Add(new string[] {surname.text, forename.text, address.text .... });
// add as much as you want.

Вы ищете пример для извлечения данных из XML или просто добавить массив строк, извлеченный из XML??

Вот как вы добавляете строковый массив.

string[] s = new string[4];
s[0] = "Salim";
s[1] = "9388938813"
s[2] = "s/10 santhi Nagar, Dpo road, Palakkad"
s[3] = "Kerala"
datagridView1.Rows.Add(s);
Другие вопросы по тегам