Solved

Shortening a TreeView logic.

Posted on 2009-04-02
3
420 Views
Last Modified: 2013-12-14
Hi I'm currently working on a TreeView with Oracle Database.
The thing is I have to connect to 2 databases in this TreeView and due to the column name and description naming differences I could'nt use the UNION function in the SQL statement.

So I used Code1 to populate the TreeView untill the 5th level and the code compile in less then 10 seconds.

After that I proceed to connecting the 2nd database and it'll be on the 6th level but when i put Code2 inside the "if (strList.Length == 5)" statement the code compile more then 2 minutes which is really unaccecptable.

I'm hoping if anyone could provide solutions to shorten the compilation time.
 Thanks in advaance.
// Code1

                    foreach (DataRow dr in ordt.Rows)

                    {

                        nodeCheck = new TreeNode();

                        nodeCheck.Name = dr[0].ToString();                        

                        strText = dr[2].ToString();

                        strDesc = dr[3].ToString();

                        strList = strText.Split('.');

                        nodeCheck.Text = strList[strList.Length - 1];

                        if (dr[1] != DBNull.Value)

                        {

                            node = treeScadaItems.Nodes.Find(dr[1].ToString(), true);

                            if (strList.Length == 5)

                                {

                                    node[0].Nodes.Add(nodeCheck);

                                }

                                else

                                { node[0].Nodes.Add(nodeCheck); }

                        }

                        else

                        {

                            treeScadaItems.Nodes.Add(nodeCheck);

                        } 

                    } 

                                    // Code2

                                    localSQL = "SELECT KEYID,PRODUCT_NAME,PRODUCT_DESC,PKEYID,PRODUCT_TYPE FROM PRODUCT_PT WHERE PKEYID LIKE '" + dr[0].ToString() + "'";

                                    OracleCommand cmdOracle1 = new OracleCommand(localSQL, localConnection);

                                    cmdOracle1.CommandType = CommandType.Text;

                                    drOracle = cmdOracle1.ExecuteReader();

                                    while (drOracle.Read())

                                    {

                                        nodeCheck = new TreeNode();

                                        nodeCheck.Name = dr[0].ToString();

                                        strText = drOracle.GetOracleString(1).ToString();

                                        nodeCheck.Text = strText.ToString();

                                        node[0].Nodes.Add(nodeCheck);
 

                                        nodeCheck.Tag = drOracle.GetOracleValue(0).ToString();

                                    }

                                    drOracle.Close();

Open in new window

0
Comment
Question by:csharp_learner
  • 2
3 Comments
 
LVL 9

Accepted Solution

by:
kprestage earned 500 total points
Comment Utility
How many nodes does the first query add?  How about the second query?  Are you sure it is a code problem and not an issue with the Treeview loading too many nodes?  The Tree gets VERY slow when you start adding a lot of nodes to it.  
0
 
LVL 9

Assisted Solution

by:kprestage
kprestage earned 500 total points
Comment Utility
Also, are you calling the treeview's BeginUpdate before your loop and EndUpdate after your loop?  If not, try that and see if you have some improvement.
0
 

Author Comment

by:csharp_learner
Comment Utility
Sorry for the late reply,

Yes your're correct there is alot of nodes the TreeView needs to load.
How can I put the BeginUpdate and EndUpdate into my code?
As I can only access to BeginEdit and BeginInvoke when i tried to access using treeview1.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Update (December 2011): Since this article was published, the things have changed for good for Android native developers. The Sequoyah Project (http://www.eclipse.org/sequoyah/) automates most of the tasks discussed in this article. You can even fin…
This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
The viewer will learn how to use and create keystrokes in Netbeans IDE 8.0 for Windows.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now