I am using dapper, asp.net web api and want to show data in treeview. For this, I have 2 models that currently looks like below. Database table mapping:
public c
Create a method in Zones model
public void PrintPretty(string indent, bool last)
{
Console.Write(indent);
if (last)
{
Console.Write("|-");
indent += " ";
}
else
{
Console.Write("|-");
indent += "| ";
}
Console.WriteLine(Name);
for (int i = 0; i < Children.Count; i++)
Children[i].PrintPretty(indent, i == Children.Count - 1);
}
then rename the zones model class to childzone
public class childzones
{
public string model_zone_id { get; set; }
public string model_zone_name { get; set; }
public string model_zone_parent_id { get; set; }
}
because class names should not be equal for generating treeNode.
You can use the same Zones class like this
public class Zones
{
public Zones()
{
Children = new List();
}
public string Id { get; set; }
public string Name { get; set; }
public List Children { get; set; }
public void PrintPretty(string indent, bool last)
{
Console.Write(indent);
if (last)
{
Console.Write("|-");
indent += " ";
}
else
{
Console.Write("|-");
indent += "| ";
}
Console.WriteLine(Name);
for (int i = 0; i < Children.Count; i++)
Children[i].PrintPretty(indent, i == Children.Count - 1);
}
}
Finally you will get a Model like this
static void Main(string[] args)
{
Zones node1 = new Zones()
{
Name = "Root",
Id = "1",
Children = {
new Zones() {
Name = "BranchA",
Id = "1",
Children = {
new Zones() {
Name = "Siblings1",
Id = "1",
Children = {
new Zones() {
Name = "subChild1",
Id = "1",
Children = {
}
},
new Zones() {
Name = "subchild2",
Id = "1",
Children= {
}
}
}
},
new Zones() {
Name = "Siblings2",
Id = "1",
Children = {
}
}
}
},
new Zones() {
Name = "BranchB",
Id = "1",
Children = {
new Zones() {
Name = "Sibilings1",
Id = "1",
Children = {
}
}
}
}
}
};
node1.PrintPretty("", true);
}
Output
|-Root
|-BranchA
| |-Siblings1
| | |-subChild1
| | |-subchild2
| |-Siblings2
|-BranchB
|-Sibilings1