Jake
Jake

Reputation: 1660

How to get all cell values form a Property Grid c#

I have a property Grid as follows:

enter image description here

I want to copy the complete content of the property grid to a data grid view(dataGeriView1) when submit button is clicked.

How to do this? Please help.

Upvotes: 0

Views: 2253

Answers (2)

gawicks
gawicks

Reputation: 1964

 private void Submit_Click(object sender, EventArgs e)
    {
        //propertyGrid1.SelectedObject = this;
        dataGridView1.Columns.Add("Property", "Property");
        dataGridView1.Columns.Add("Value", "Value");
        GridItem gi = propertyGrid1.SelectedGridItem;

        while (gi.Parent != null)            
            gi = gi.Parent;

        foreach (GridItem item in gi.GridItems)            
            ParseGridItems(item); //recursive

        dataGridView1.Sort(dataGridView1.Columns["Property"], ListSortDirection.Ascending);

    }
    private void ParseGridItems(GridItem gi)
    {
        if (gi.GridItemType == GridItemType.Category)            
            foreach (GridItem item in gi.GridItems)                
                ParseGridItems(item);                

        dataGridView1.Rows.Add(gi.Label, gi.Value);

    }

Adapted from https://stackoverflow.com/a/12109186/1163434

Upvotes: 1

Vimal CK
Vimal CK

Reputation: 3563

Below is a sample snippet i have created to solve the above issue. Create a DataGridview by adding Columns Name,Age,Email,Phone.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
      Student std = new Student {Name = "Vimal" , Phone = "PhoneValue", Email="mymail",Age=24};
      propertyGrid1.SelectedObject= std;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int index = dataGridView1.Rows.Count - 1;
        Student std = (Student)propertyGrid1.SelectedObject;
        dataGridView1.Rows[index].Cells["Name"].Value = std.Name;
        dataGridView1.Rows[index].Cells["Age"].Value = std.Age;
        dataGridView1.Rows[index].Cells["Email"].Value = std.Email;
        dataGridView1.Rows[index].Cells["Phone"].Value = std.Phone;
    }
}

public class Student
{
    public int Age { get; set; }
    public string Email { get; set; }
    public string Name { get; set; }
    public string Phone { get; set; }
}

Upvotes: 0

Related Questions