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); }
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(); }
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(); }