Добавление элемента в 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);