Introduction 
This document covers how to populate a DataGridView from XML and how to save DataGridView values back to XML. 
Steps to configure.
Open Visual Studio and create a new Windows application.
![PICS1.gif]()
Add a DataGridView to the form.
![PICS2.gif]() 
 
Create a XML file in your local drive (Say D:\ drive) with the following code.
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <Table1>
      <Server>Server1</Server>
        <Database>Database1</Database>
  </Table1>
  <Table1>
      <Server>Server2</Server>
      <Database>Database2</Database>
  </Table1>
  <Table1>
      <Server>Server3</Server>
      <Database>Database3</Database>
  </Table1>
</NewDataSet>
Add the following code in the form load event.
//Populating databases value in dropdown
XmlDocument XMLDoc = new XmlDocument();
XMLDoc.Load(path);
//Give Node name here 
XmlNodeList nodelist = XMLDoc.SelectNodes("NewDataSet/Table1");
foreach(XmlNode node in nodelist){
        comboBox1.Items.Add(node.SelectSingleNode("Database").InnerText);
}
Add a button "Add" below the DataGridView as shown below.
![PICS3.gif]() 
 
Add the following code in the button click event.
private void button1_Click(object sender, EventArgs e)
{
     //path of XML file
     string path = "D:\\Santhosh\\XMLFile1.xml";
     DataSet ds = new DataSet();
     DataTable dt = new DataTable();
     //Adding columns to datatable
    foreach (DataGridViewColumn col in dataGridView1.Columns)
    {
          dt.Columns.Add(col.DataPropertyName, col.ValueType);
    }
    //adding new rows
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
             DataRow row1 = dt.NewRow();
             for (int i = 0; i < dataGridView1.ColumnCount; i++)
             //if value exists add that value else add Null for that field
             row1[i] = (row.Cells[i].Value == null ? DBNull.Value : row.Cells[i].Value);
            dt.Rows.Add(row1);
    }
     //Copying from datatable to dataset
     ds.Tables.Add(dt);
     //writing new values to XML
     ds.WriteXml(path);
     MessageBox.Show("Successfully added ", "Success");
     this.Close()
 }
 
Run the solution. The following form should be displayed.
![PICS7.gif]() 
 
Now enter the new values into the DataGridView and click Add. Check that the values are being added.
![PICS8.gif]()
Now check the new value is being added in the XML file.
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <Table1>
      <Server>Server1</Server>
        <Database>Database1</Database>
  </Table1>
  <Table1>
      <Server>Server2</Server>
      <Database>Database2</Database>
  </Table1>
  <Table1>
      <Server>Server3</Server>
      <Database>Database3</Database>
  </Table1>
</NewDataSet>
Using the above concept to create a connection string from XML:
This can be used to configure a connection string at run time from XML. So the user can add his server name and database at XML and create connections at run time.
Now add a dropdown and a button above the DataGridView as shown below. Add the following code in the form load event to populate the databases in the dropdown as below.
 
/Populating databases value in dropdown
XmlDocument XMLDoc = new XmlDocument();
XMLDoc.Load(path);
//Give Node name here
XmlNodeList nodelist = XMLDoc.SelectNodes("NewDataSet/Table1");
foreach(XmlNode node in nodelist){
       comboBox1.Items.Add(node.SelectSingleNode("Database").InnerText);
}
![PICS91.gif]()
![PICS91.gif]()
Now add the following code to fetch the server name on selecting the database in the dropdown and click on Connect.
private void button2_Click(object sender, EventArgs e)
{
      string path = "D:\\Santhosh\\XMLFile1.xml";
      string server="";
      XmlDocument XMLDoc = new XmlDocument();
      XMLDoc.Load(path);
     //Give Node name here
      XmlNodeList nodelist = XMLDoc.SelectNodes("NewDataSet/Table1");
      foreach (XmlNode node in nodelist)
      {
           if ((node.SelectSingleNode("Database").InnerText) == comboBox1.SelectedItem.ToString())
           {
                 server = node.SelectSingleNode("Server").InnerText;
           }
      }
}
Now using the database and server, create a new SqlConnection as usual.
Conclusion
By using the above code, the user can populate a DataGridView from XML and again save back the new values to the XML file. This will be very useful in creating a connection string also.