• Как удалить повторяющуюся строку из treeview ( treenode )?

    moClay
    @moClay Автор вопроса
    учусь всему
    string x = " ";
    
    for (int k = 0; k < node.Nodes[index].Nodes.Count; k++)
                {
    
                    if ( x.Contains(node.Nodes[index].Nodes[k].Text)/*node.Nodes[index].Nodes[k].Text != x*/)
                    {
                        node.Nodes[index].Nodes.Remove(node.Nodes[index].Nodes[k]);
                        k--;
                    }
                    else 
                    {
                        
                        x += node.Nodes[index].Nodes[k].Text;
    
                    }
                }
    Ответ написан
    Комментировать
  • Как заполнить treeview ( treenode ) данными из datatable?

    moClay
    @moClay Автор вопроса
    учусь всему
    Я нашел решение в том чтобы сначала заполнить родительскую ветвь всеми элементами
    foreach (DataRow v in table.Rows)
                {
                    node.Nodes[0].Nodes.Add(v[0].ToString());
                }


    Затем пройтись по этим элементам и удалить повторяющиеся с помощью обычных циклов for ( до более рациональной штуки не додумался )

    string x = " ";
    
    for (int k = 0; k < node.Nodes[0.Nodes.Count; k++)
                {
                    
                    if (node.Nodes[0].Nodes[k].Text != x)
                    {
                        x = node.Nodes[0].Nodes[k].Text;
                        
                    }
                    else
                    {
                        node.Nodes[0].Nodes.Remove(node.Nodes[0].Nodes[k]);
                    }
                }


    И затем заполнил его элементами из второго столбца с помощью switch

    foreach (DataColumn col in table.Columns)
                {
                    if (col.ColumnName == "Name") 
                    {
                        foreach (DataRow row in table.Rows)
                        {
                            switch (row[col.ColumnName].ToString())
                            {
                                case "Портланд":
                                    node.Nodes[0].Nodes[r].Nodes.Add(row[1].ToString());
                                    r++;
                                    break;
                                case "Романцемент":
                                    node.Nodes[0].Nodes[r].Nodes.Add(row[1].ToString());
                                    break;
                                case "Алумацемент":
                                    r++;
                                    node.Nodes[0].Nodes[r].Nodes.Add(row[1].ToString());
                                    break;
                            }
                        }               
                    }
                }
    Ответ написан