We help IT Professionals succeed at work.

Shortening a TreeView logic.

csharp_learner
on
445 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

Comment
Watch Question

This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION

Author

Commented:
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.
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.