Пример #1
0
        private bool save()
        {
            // if they changed the value itself, show them counts of all records which depend on it
            // and make sure they want to do that

            if (IsControlDirty(txtValue))
            {
                if (_totalReferenced > 0)
                {
                    if (DialogResult.No == MessageBox.Show(this, getDisplayMember("save{noreferences_body}", "{0} rows in the database reference the original value.\r\nAll these rows will be updated to reflect the new value.\r\nDo you wish to continue?", _totalReferenced.ToString("###,###,##0")),
                                                           getDisplayMember("save{noreferences_title}", "Update Referencing Rows?"), MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                    {
                        return(false);
                    }
                }

                var ds  = AdminProxy.ListCodeValues(GroupName, null, null);
                var drs = ds.Tables["list_code_values"].Select("value_member = '" + txtValue.Text.Replace("'", "''") + "'");

                // first make sure the group/value doesn't already exist...
                if (drs.Length > 0)
                {
                    MessageBox.Show(this, getDisplayMember("save{groupexists_body}", "The value '{0}' already exists in group '{1}'.\r\nPlease specify a different value.", txtValue.Text, GroupName),
                                    getDisplayMember("save{groupexists_title}", "Value Already Exists"), MessageBoxButtons.OK, MessageBoxIcon.Information);
                    txtValue.Focus();
                    txtValue.SelectAll();
                    return(false);
                }
            }

            if (_touchedTables == null)
            {
                _touchedTables = new List <string>();
            }

            ID = AdminProxy.SaveCodeValue(ID,
                                          GroupName,
                                          txtValue.Text,
                                          _dtLangs, _touchedTables);

            if (Modal && Owner != null)
            {
                var f = (frmCodeGroup)Owner;
                f.RefreshData();
            }
            MainFormUpdateStatus(getDisplayMember("save{done}", "Saved code value {0}", txtValue.Text), true);
            return(true);
        }
Пример #2
0
        public override void RefreshData()
        {
            initDropDowns();

            dgvLanguages.AutoGenerateColumns = false;

            var filled = false;

            _totalReferenced = 0;

            var ds = AdminProxy.ListCodeValues(GroupName, ID, null);

            _dtLangs = ds.Tables["list_code_value_langs"];
            dgvLanguages.DataSource = _dtLangs;
            _rtlRows = new List <int>();
            for (var i = 0; i < _dtLangs.Rows.Count; i++)
            {
                var drLang = _dtLangs.Rows[i];
                if (drLang["script_direction"].ToString().ToUpper() == "RTL")
                {
                    _rtlRows.Add(i);
                }
            }

            if (ID > -1)
            {
                var dt = ds.Tables["list_code_values"];
                if (dt.Rows.Count > 0)
                {
                    var dr = dt.Rows[0];

                    txtValue.Text = dr["value_member"].ToString();

                    var dtRef = AdminProxy.ListTablesAndDataviewsByCodeGroup(GroupName).Tables["list_tables_and_dataviews_by_code_group"];
                    lvReferencedBy.Items.Clear();
                    foreach (DataRow drR in dtRef.Rows)
                    {
                        var tbl = drR["table_name"].ToString();
                        var fld = drR["field_name"].ToString();
                        if (!String.IsNullOrEmpty(tbl))
                        {
                            var lvi = new ListViewItem(tbl);
                            lvi.Tag = tbl + "." + fld;
                            lvi.SubItems.Add(fld);

                            // todo: lookup # of rows with that value
                            var count = AdminProxy.GetCodeValueUsageCount(txtValue.Text, tbl, fld);
                            _totalReferenced += count;
                            lvi.SubItems.Add(count.ToString("###,###,##0"));

                            lvReferencedBy.Items.Add(lvi);
                        }
                    }

                    filled = true;
                }
            }

            if (!filled)
            {
                txtValue.Text = "";
            }

            MarkClean();

            syncGui();
        }
Пример #3
0
        public override void RefreshData()
        {
            Sync(true, delegate() {
                var groupName = MainFormCurrentNode().Tag as string;
                if (String.IsNullOrEmpty(groupName))
                {
                    groupName = _originalGroupName;
                }

                this.Text = "Code Group - " + groupName + " - " + this.AdminProxy.Connection.ServerName + (Toolkit.IsProcessElevated() ? " - Administrator " : "");

                if (!String.IsNullOrEmpty(groupName))
                {
                    // fill values tab
                    var languageID = Toolkit.ToInt32(getSelectedValue(ddlLanguage), null);
                    var dt         = AdminProxy.ListCodeValues(groupName, null, languageID).Tables["list_code_values"];

                    if (dt.Rows.Count > 0)
                    {
                        txtName.Text       = dt.Rows[0]["group_name"].ToString();
                        _originalGroupName = dt.Rows[0]["group_name"].ToString();
                    }

                    if (Array.IndexOf(RESERVED_CODE_GROUPS, _originalGroupName) > -1)
                    {
                        // don't let them edit reserved code groups
                        txtName.Enabled = false;
                    }

                    //dgvCodes.AutoGenerateColumns = false;
                    //dgvCodes.DataSource = dt;

                    var lvs = new List <ListViewItem>();
                    foreach (DataRow dr in dt.Rows)
                    {
                        var lvi = new ListViewItem(dr["value_member"].ToString());
                        lvi.Tag = dr["code_value_id"];
                        lvi.SubItems.Add(dr["title"].ToString());
                        lvi.SubItems.Add(dr["description"].ToString());
                        lvi.SubItems.Add((Toolkit.ToDateTime(dr["last_touched"], DateTime.MinValue)).ToLocalTime().ToString());
                        lvs.Add(lvi);
                    }
                    lvValues.Items.Clear();
                    lvValues.Items.AddRange(lvs.ToArray());


                    tpValues.Text = "Values ( " + dt.Rows.Count + " ) ";

                    initHooksForMdiParent(null, null, null);


                    // fill referenced by tab
                    var dtRef = AdminProxy.ListTablesAndDataviewsByCodeGroup(groupName).Tables["list_tables_and_dataviews_by_code_group"];
                    lvReferencedBy.Items.Clear();
                    var tables = 0;
                    var dvs    = 0;
                    foreach (DataRow drR in dtRef.Rows)
                    {
                        var dv  = drR["dataview_name"].ToString();
                        var lvi = new ListViewItem(dv);
                        if (!String.IsNullOrEmpty(dv))
                        {
                            dvs++;
                        }
                        else
                        {
                            tables++;
                        }
                        lvi.SubItems.Add(drR["table_name"].ToString());
                        lvi.SubItems.Add(drR["field_name"].ToString());
                        lvi.SubItems.Add((Toolkit.ToDateTime(drR["last_touched"], DateTime.MinValue)).ToLocalTime().ToString());
                        lvReferencedBy.Items.Add(lvi);
                    }
                    tpReferencedBy.Text = "Referenced By ( " + dvs + " / " + tables + " )";
                }

                MarkClean();
            });

            syncGui();
        }