For a project I want to create recursive an object (menu) hierarchy using C#. I read and tried a lot from the internet but I cannot fix it fast. To clarify my problem, I have a simple database table created.
CREATE TABLE Page
(
Id INT NOT NULL PRIMARY KEY IDENTITY,
ParentId INT DEFAULT 0,
MenuTitle VARCHAR(255) NOT NULL
)
INSERT INTO Page (ParentId, MenuTitle) VALUES
(0, 'Parent 1'),
(1, 'Child 1'),
(1, 'Child 2'),
(3, 'ChildChild 1'),
(3, 'ChildChild 2'),
(3, 'ChildChild 3'),
(0, 'Parent 2'),
(0, 'Parent 3'),
(0, 'Parent 4')
*ParentId 0 is a main navigation item
This is the model.
class PageItem
{
public int Id { get; set; }
public int ParentId { get; set; }
public string MenuText { get; set; }
List<PageItem> Childs { get; set; }
}
To load the data from the database you can use this method.
public List<PageItem> GetPageItems()
{
List<PageItem> pageItems = new List<PageItem>();
SqlConnection conn = new SqlConnection(" * YOUR CONNECTIONSTRING *");
SqlCommand cmd = new SqlCommand("SELECT Id, ParentId, MenuTitle FROM Page", conn);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
pageItems.Add(new PageItem()
{
Id = Convert.ToInt32(rdr["Id"]),
ParentId = Convert.ToInt32(rdr["ParentId"]),
MenuText = rdr["MenuTitle"].ToString()
});
}
rdr.Close();
conn.Close();
return pageItems;
}
I want that the model is filled recursively so it looks like this.
- Parent 1
-- Child 1
-- Child 2
--- ChildChild 1
--- ChildChild 2
--- ChildChild 3
- Parent 2
- Parent 3
- Parent 4
Does anyone know how I could realize this?
Thanks a lot.
Jordy