使用c#单击按钮将项添加到DataGridView

时间:2013-09-22 18:52:50

标签: c# xml winforms datagridview form-load

我正在编写一个程序来管理我们公司的所有客户。我有一个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 个答案:

答案 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.