Exemple #1
0
        private void RunOnceOnActivationManual()
        {
            // Start by dealing with the settings classes that will be displayed in the combo box filter
            DataTable settingsClassDT = FMainDS.SSystemDefaults.DefaultView.ToTable("SettingsClass", true, SSystemDefaultsTable.GetCategoryDBName());

            if (Form.ModifierKeys == (Keys.Alt | Keys.Shift))
            {
                // This is the back-door to showing all the system defaults
                FLaunchedInSysAdminMode = true;

                DataRow dr = settingsClassDT.NewRow();
                dr[0] = "!SysAdmin!";
                settingsClassDT.Rows.Add(dr);
            }

            cmbClass.DisplayMember = SSystemDefaultsTable.GetCategoryDBName();
            cmbClass.ValueMember   = SSystemDefaultsTable.GetCategoryDBName();
            settingsClassDT.DefaultView.RowFilter = string.Format("{0} IS NOT NULL", SSystemDefaultsTable.GetCategoryDBName());
            settingsClassDT.DefaultView.Sort      = string.Format("{0}", cmbClass.DisplayMember);
            cmbClass.DataSource = settingsClassDT.DefaultView;

            // Select the first item in the class filter
            if (settingsClassDT.DefaultView.Count > 0)
            {
                cmbClass.SelectedIndex = 0;
                FActiveClass           = cmbClass.GetSelectedString();
            }

            // This will select the first row in the grid now that everything has been activated
            FSuppressClassChange = false;
            OnSettingsClassChange(null, null);
        }
Exemple #2
0
        private void OnSettingsClassChange(object sender, EventArgs e)
        {
            // We get called here when the settings class combo has changed
            if ((FFilterAndFindObject == null) || (FSuppressClassChange == true))
            {
                return;
            }

            if (sender != null)
            {
                // We don't do this at startup, but after that we need to set the class back to what it was before if validation fails
                if (!ValidateAllData(false, TErrorProcessingMode.Epm_All))
                {
                    FSuppressClassChange = true;
                    ((TCmbAutoComplete)sender).SetSelectedString(FActiveClass);
                    FSuppressClassChange = false;
                    return;
                }

                FActiveClass = ((TCmbAutoComplete)sender).GetSelectedString();
            }

            // We need to know if we are displaying a sysAdmin row or not
            string sysAdminRowFilter = "12345";
            string rowFilter         = string.Format("{0}>0 AND ", FControlsCountName);

            if (cmbClass.SelectedValue == null)
            {
                rowFilter += "1=0";
            }
            else if (FLaunchedInSysAdminMode && (cmbClass.SelectedIndex == 0))
            {
                sysAdminRowFilter = string.Format("{0}=0 OR {1} IS NULL", FControlsCountName, SSystemDefaultsTable.GetCategoryDBName());
                rowFilter         = sysAdminRowFilter;
            }
            else
            {
                rowFilter += string.Format("{0}='{1}'", SSystemDefaultsTable.GetCategoryDBName(), cmbClass.SelectedValue.ToString());
            }

            FFilterAndFindObject.FilterPanelControls.SetBaseFilter(rowFilter, true);

            // Both these will cause validation to run, but it should be ok because we checked it above
            FFilterAndFindObject.ApplyFilter();
            SelectRowInGrid(1);

            // Depending on how validation worked out we now know whether we are displaying the sysAdmin codes or not
            FShowingSysAdminCodes = FMainDS.SSystemDefaults.DefaultView.RowFilter.StartsWith(sysAdminRowFilter);

            // Now we can show/hide columns 0 and 1
            grdDetails.Columns[0].Visible = FShowingSysAdminCodes;
            grdDetails.Columns[1].Visible = !FShowingSysAdminCodes;
            grdDetails.AutoResizeGrid();
        }