コード例 #1
0
        /// <summary>
        /// Refreshes the DB objects list control with current objects in the connected schema.
        /// </summary>
        /// <param name="reloadFromServer">Flag indicating whether DB objects must be reloaded from the connected MySQL server.</param>
        private bool RefreshDbObjectsList(bool reloadFromServer)
        {
            if (DBObjectList.HeaderNodes.Count < 3)
            {
                return(false);
            }

            bool success = true;

            try
            {
                // Avoids flickering of DB Objects lists while adding the items to it.
                DBObjectList.BeginUpdate();

                DBObjectList.ClearChildNodes();
                if (reloadFromServer)
                {
                    LoadTables();
                    LoadViews();
                    LoadProcedures();
                }

                // Refresh Tables
                foreach (var dbTable in LoadedTables.Where(table => string.IsNullOrEmpty(Filter) || table.Name.ToUpper().Contains(Filter)))
                {
                    var node = DBObjectList.AddDbObjectNode(DBObjectList.HeaderNodes[0], dbTable);
                    dbTable.Selected = false;
                    node.ImageIndex  = 0;
                }

                // Refresh Views
                foreach (var dbView in LoadedViews.Where(view => string.IsNullOrEmpty(Filter) || view.Name.ToUpper().Contains(Filter)))
                {
                    var node = DBObjectList.AddDbObjectNode(DBObjectList.HeaderNodes[1], dbView);
                    dbView.Selected = false;
                    node.ImageIndex = 1;
                }

                // Refresh Procedures
                foreach (var dbProcedure in LoadedProcedures.Where(procedure => string.IsNullOrEmpty(Filter) || procedure.Name.ToUpper().Contains(Filter)))
                {
                    var node = DBObjectList.AddDbObjectNode(DBObjectList.HeaderNodes[2], dbProcedure);
                    dbProcedure.Selected = false;
                    node.ImageIndex      = 2;
                }

                DBObjectList.ExpandAll();
                DBObjectList.Nodes[0].EnsureVisible();

                // Avoids flickering of DB Objects lists while adding the items to it.
                DBObjectList.EndUpdate();
                DBObjectList_AfterSelect(null, null);
            }
            catch (Exception ex)
            {
                success = false;
                MiscUtilities.ShowCustomizedErrorDialog(Resources.RefreshDBObjectsErrorTitle, ex.Message, true);
                MySqlSourceTrace.WriteAppErrorToLog(ex);
            }

            return(success);
        }