linguini
linguini

Reputation: 1939

Filter treeview from combo-box selected item

The tree-view is loaded with some data from a DB. I want to filter tree-view for the selected combo-box item. Anybody show me how to perform this?

 public SelectorDataTreeView()
        {            
            InitializeComponent();

            button1.FlatStyle = FlatStyle.Flat;

            comboBox1.Items.Add("HP");
            comboBox1.Items.Add("DELL");
            comboBox1.Items.Add("Cam");

        }






        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
           String s = comboBox1.SelectedItem.ToString();
           ExpandAll(MyTreeView.Nodes);
        }




        //TreeKey Finder
        private TreeNode[] FindNode(String searchKey)
        {

            return MyTreeView.Nodes.Find(searchKey, true);

        }
}

Upvotes: 0

Views: 3075

Answers (2)

Mahdi Tahsildari
Mahdi Tahsildari

Reputation: 13582

private void Form4_Load(object sender, EventArgs e)
    {
        treeView1.Nodes.Add("LaptopsNodeKey", "Laptop");
        treeView1.Nodes.Add("CellPhonesNodeKey", "Phones");
        treeView1.Nodes.Find("LaptopsNodeKey", true)[0].Nodes.Add("DellTM", "Dell");
        treeView1.Nodes.Find("LaptopsNodeKey", true)[0].Nodes.Add("SonyTM", "Sony");
        treeView1.Nodes.Find("CellPhonesNodeKey", true)[0].Nodes.Add("HTCTM", "HTC");
        treeView1.Nodes.Find("CellPhonesNodeKey", true)[0].Nodes.Add("NokiaTM", "Nokia");

        comboBox1.Items.Add("LaptopsNodeKey");
        comboBox1.Items.Add("CellPhonesNodeKey");

        comboBox2.Items.Add("Laptop");
        comboBox2.Items.Add("Phones");
    }

    //This works because you Loaded ComboBox1 with Name property of Nodes
    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        treeView1.CollapseAll();
        treeView1.SelectedNode = treeView1.Nodes.Find(comboBox1.Text, true)[0];
        treeView1.SelectedNode.Expand();
    }

    //This doesn't work, because you Loaded ComboBox2 with Text property of Nodes
    private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        treeView1.CollapseAll();
        treeView1.SelectedNode = treeView1.Nodes.Find(comboBox1.Text, true)[0];
        treeView1.SelectedNode.Expand();
    }

Upvotes: 1

Mahdi Tahsildari
Mahdi Tahsildari

Reputation: 13582

Aha, this is your fault:
String s = comboBox1.SelectedItem.ToString();
you should use this:
String s = comboBox1.Text;
It's working.
and also you should search for node Name property not Text property.
after you got s you need to use it like
treeView1.SelectedNode = treeView1.Nodes.Find("WantedNodesName", true)[0]; treeView1.SelectedNode.Expand();

Upvotes: 1

Related Questions