this is my data
CategName subCateName Id Products
NULL NULL 6 Prod3
NULL NULL 9 SalesProd7
Beverages Beers 15 Bell Lager 500 ML
Beverages Beers 16 CLUB PILSENER 500 ML
Beverages Juices 24 Apple Juice
Beverages Juices 25 Chikooo Juice
Beverages SoftDrinks 26 Coke
Beverages SoftDrinks 27 Pepsi
Beverages Wines 28 RED WINE
Beverages Wines 29 White Wine
Food MeatProducts36 GOAT MEAT
Food Fruits 18 APPLE GREEN
Food Fruits 19 LOCAL ORANGES
Others OtherItems 30 BENSON & HEDGES LIGHT
VegeTable NULL 20 BEETROOT
VegeTable NULL 21 TOMATO FRESH
I got the above data into Datatable 'table' and I am trying to insert into tree view
as Categories-subcategories-Products. I have tried the following and my output in such a way i get only
one product for each categorie and sub categorie.
Code complexity is more here...(worst) Is there any other way of implementing
like Switch or any other methods.
CategName subCateName Id Products
NULL NULL 6 Prod3
NULL NULL 9 SalesProd7
Beverages Beers 15 Bell Lager 500 ML
Beverages Beers 16 CLUB PILSENER 500 ML
Beverages Juices 24 Apple Juice
Beverages Juices 25 Chikooo Juice
Beverages SoftDrinks 26 Coke
Beverages SoftDrinks 27 Pepsi
Beverages Wines 28 RED WINE
Beverages Wines 29 White Wine
Food MeatProducts36 GOAT MEAT
Food Fruits 18 APPLE GREEN
Food Fruits 19 LOCAL ORANGES
Others OtherItems 30 BENSON & HEDGES LIGHT
VegeTable NULL 20 BEETROOT
VegeTable NULL 21 TOMATO FRESH
I got the above data into Datatable 'table' and I am trying to insert into tree view
as Categories-subcategories-Products. I have tried the following and my output in such a way i get only
one product for each categorie and sub categorie.
Code:
if (table != null)
{
foreach (DataRow row in table.Rows)
{
MainNode = new TreeNode(row.ItemArray[0].ToString());
MainNode.Name = row.ItemArray[0].ToString();
if (MainNode.Text == "")
{
MainNode = new TreeNode(row.ItemArray[1].ToString());
MainNode.Name = row.ItemArray[1].ToString();
if (MainNode.Text == "")
{
MainNode = new TreeNode(row.ItemArray[3].ToString());
MainNode.Name = row.ItemArray[3].ToString();
MainNode.Tag = row.ItemArray[2].ToString();
if (!RootNode.Nodes.ContainsKey(MainNode.Name))
{
RootNode.Nodes.Add(MainNode);
} }
else
{
ChildNode = new TreeNode(row.ItemArray[3].ToString());
ChildNode.Name = row.ItemArray[3].ToString();
ChildNode.Tag = row.ItemArray[2].ToString();
if (!MainNode.Nodes.ContainsKey(ChildNode.Name))
{
MainNode.Nodes.Add(ChildNode);
}
if (!RootNode.Nodes.ContainsKey(MainNode.Name))
{
RootNode.Nodes.Add(MainNode);
} } }
else
{
ChildNode = new TreeNode(row.ItemArray[1].ToString());
ChildNode.Name = row.ItemArray[1].ToString();
if (ChildNode.Text == "")
{
ChildNode = new TreeNode(row.ItemArray[3].ToString());
ChildNode.Name = row.ItemArray[3].ToString();
ChildNode.Tag = row.ItemArray[2].ToString();
if (!MainNode.Nodes.ContainsKey(ChildNode.Name))
{
MainNode.Nodes.Add(ChildNode);
} }
else
{
SubNode = new TreeNode(row.ItemArray[3].ToString());
SubNode.Name = row.ItemArray[3].ToString();
SubNode.Tag = row.ItemArray[2].ToString();
if (!ChildNode.Nodes.ContainsKey(SubNode.Name))
{
ChildNode.Nodes.Add(SubNode);
} }
if (!MainNode.Nodes.ContainsKey(ChildNode.Name))
{
MainNode.Nodes.Add(ChildNode);
}
else
{
//Here I am unable to understand how to fill child nodes into mainnode
//The below code is wrong
for (int i = 0; i <= MainNode.Nodes.Count; i++)
{
MainNode.Nodes.Add(ChildNode);
} }
if (!RootNode.Nodes.ContainsKey(MainNode.Name))
{
RootNode.Nodes.Add(MainNode);
} } } }
like Switch or any other methods.
Comment