我正在编写一个程序来管理我们公司的所有客户。我有一个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”。
提前致谢。
干杯
答案 0 :(得分:2)
在最后的按钮点击事件中添加以下代码行:
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;
}
答案 1 :(得分:1)
您需要使用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)));
答案 2 :(得分:0)
您是否正在寻找从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);
答案 3 :(得分:0)
dataGridKunden.Rows.Add(new string[] {surname.text, forename.text, address.text .... });
// add as much as you want.