private void InitializeNewKey( ) { ClearKeyPropertyControls(); _newKey = new ForeignKeyWrapper(_cp); txtName.ReadOnly = false; _newKey.HostTable = cmbHostTables.SelectedItem as TableWrapper; cmbFk.SelectedItem = null; cmbFk.Enabled = false; if (_hostTable != null) { SelectedHostTable = _hostTable.Name; } else if (cmbHostTables.Items.Count > 0) { cmbHostTables.SelectedIndex = 0; } if (_afterNewKeyCreated != null) { _afterNewKeyCreated(this, SelectedKey); } }
private void RenderKeyProperties( ) { ForeignKeyWrapper fk = cmbFk.SelectedItem as ForeignKeyWrapper; if (fk == null) { ClearKeyPropertyControls(); return; } //Select host table from combo cmbHostTables.SelectedIndex = cmbHostTables.FindStringExact(fk.HostTable.Name); txtName.Text = fk.Name; txtName.ReadOnly = true; chkCascadeUpdate.Checked = fk.CascadeUpdate; chkCascadeDelete.Checked = fk.CascadeDelete; chkNotForRep.Checked = fk.NotForReplication; //Select reference table from combo cmbRefTables.SelectedIndex = cmbRefTables.FindStringExact(fk.RefTable.Name); //Populate reference primary keys and select exact key in combo PopulateReferenceTablePrimaryKeys(fk.ReferencedKey.Name); //Populate columns PopulateColumns(); }
private void PopulateColumns( ) { _tblCols.Clear(); TableWrapper hostTable = cmbRefTables.SelectedItem as TableWrapper; NameIdPair pkConstraint = cmbRefPk.SelectedItem as NameIdPair; ForeignKeyWrapper fk = cmbFk.SelectedItem as ForeignKeyWrapper; if (hostTable == null || pkConstraint == null || fk == null) { return; } DataTable tbl = DbCmd.GetColumnsByForeignKey(_cp, hostTable.ID, pkConstraint.Id); DataRow newRow = null; foreach (DataRow row in tbl.Rows) { newRow = _tblCols.NewRow(); newRow["refCol"] = row["colName"]; newRow["hostCol"] = fk.GetColumns((string)row["colName"]); _tblCols.Rows.Add(newRow); } bsCols.DataSource = _tblCols; }
private void SaveKey( ) { grd.EndEdit(); string err = String.Empty; if (!ValidateInput(ref err)) { MessageService.ShowError(err); return; } string hostCols = String.Empty; string refCols = String.Empty; GenerateCols(out hostCols, out refCols); SelectedKey.ColsHost = hostCols; SelectedKey.ColsRef = refCols; bool isNew = _newKey != null; try { _initializing = true; if (_newKey != null) { _newKey.Create(); _newKey = null; } else if (SelectedKey != null) { SelectedKey.DropAndRecreateKey(); } InitializeForeignKeys(_mode, _hostTable, true); if (isNew && _afterNewKeySaved != null) { _afterNewKeySaved(this, SelectedKey); } else if (_afterKeySaved != null) { _afterKeySaved(this, SelectedKey); } } catch (Exception ex) { MessageService.ShowError(ex.Message); } finally { _initializing = false; } }
public void InitializeForeignKeys(TableKeyEditorMode mode, TableWrapper hostTable, long keyid) { try { _initializing = true; Mode = mode; cmbFk.Items.Clear(); _hostTable = null; _newKey = null; _hostTable = hostTable; cmbFk.Enabled = true; // Populate host tables. If host table is not null select proper table DbCmd.PopulateUserDefinedTablesCombo(cmbHostTables, _cp, ((_hostTable != null && Mode == TableKeyEditorMode.SingleTable) ? _hostTable.ID : -1)); if (_hostTable != null) { cmbHostTables.SelectedIndex = cmbHostTables.FindStringExact(_hostTable.Name); PopulateHostColumnsCombo(); } cmbHostTables.Enabled = (_hostTable != null && Mode == TableKeyEditorMode.SingleTable); //Populate reference tables combo DbCmd.PopulateUserDefinedTablesCombo(cmbRefTables, _cp, -1); ForeignKeyWrapper fk = new ForeignKeyWrapper(_cp); fk.ID = keyid; fk.LoadProperties(); fk.GetKey(); cmbFk.Items.Add(fk); cmbFk.SelectedIndex = 0; RenderKeyProperties(); } finally { _initializing = false; if (cmbFk.Items.Count == 0) { InitializeNewKey(); } } }
private void RenameKey( ) { if (SelectedKey == null) { return; } string newName = SelectedKey.Name; if (InputDialog.ShowDialog("Rename Primary Key", "New Name", ref newName) != DialogResult.OK) { return; } if (SelectedKey.Name.ToLowerInvariant() == newName.ToLowerInvariant()) { return; } try { string hostCols = String.Empty; string refCols = String.Empty; GenerateCols(out hostCols, out refCols); SelectedKey.ColsHost = hostCols; SelectedKey.ColsRef = refCols; SelectedKey.Rename(newName); txtName.Text = newName; ForeignKeyWrapper key = SelectedKey; int index = cmbFk.SelectedIndex; cmbFk.Items.Remove(key); cmbFk.Items.Insert(index, key); cmbFk.SelectedIndex = index; if (_afterKeyRenamed != null) { _afterKeyRenamed(this, SelectedKey); } } catch (Exception ex) { MessageService.ShowError(ex.Message); } }
public static void PopulateForeignKeysCombo(ComboBox cmb, ConnectionParams cp, string tableName) { if (cmb == null) { return; } cmb.Items.Clear(); using (SqlConnection conn = cp.CreateSqlConnection(true, false)) { ServerConnection srvConn = new ServerConnection(conn); Server srv = new Server(srvConn); Database db = srv.Databases[srvConn.DatabaseName]; Table hostTbl = db.Tables[tableName]; ForeignKeyWrapper key = null; foreach (ForeignKey fk in hostTbl.ForeignKeys) { key = new ForeignKeyWrapper(cp); //Load properties key.ID = fk.ID; key.Name = fk.Name; key.HostTable.ID = fk.Parent.ID; key.HostTable.Name = fk.Parent.Name; key.HostTable.Owner = fk.Parent.Schema; key.HostTable.FileGroup = fk.Parent.FileGroup; key.HostTable.LoadColumns(fk.Parent); Table refTbl = db.Tables[fk.ReferencedTable]; key.RefTable.ID = refTbl.ID; key.RefTable.Name = refTbl.Name; key.RefTable.Owner = refTbl.Schema; key.RefTable.FileGroup = refTbl.FileGroup; key.RefTable.LoadColumns(refTbl); cmb.Items.Add(key); } } }
private void DropSelectedForeignKeys( ) { if (grd.SelectedRows.Count == 0) { return; } if (!MessageService.AskQuestion("Are you sure you want to drop selected foreign keys?")) { return; } ForeignKeyWrapper key = null; try { IList <DataGridViewRow> delList = new List <DataGridViewRow>(); foreach (DataGridViewRow row in grd.SelectedRows) { key = new ForeignKeyWrapper(_cp); key.ID = (int)row.Cells[0].Value; ForeignKeyWrapper.Drop(_cp, (string)row.Cells[3].Value, (string)row.Cells[4].Value); delList.Add(row); } foreach (DataGridViewRow row in delList) { grd.Rows.Remove(row); } } catch (Exception ex) { MessageService.ShowError(ex.Message); } finally { //KeyPanelVisible = false; } }
void _foreignKeyEdit_AfterKeyDropped(object sender, ForeignKeyWrapper key) { KeyPanelVisible = false; }
void _foreignKeyEdit_AfterKeyRenamed(object sender, ForeignKeyWrapper key) { ChangeHeaderText(key.HostTable.FullName, key.Name); }
public void InitializeForeignKeys(TableKeyEditorMode mode, TableWrapper hostTable, bool renderLast) { try { _initializing = true; Mode = mode; _hostTable = null; _newKey = null; _hostTable = hostTable; cmbFk.Enabled = true; // Populate host tables. If host table is not null select proper table DbCmd.PopulateUserDefinedTablesCombo(cmbHostTables, _cp, ((_hostTable != null && Mode == TableKeyEditorMode.SingleTable) ? _hostTable.ID : -1)); if (_hostTable != null) { cmbHostTables.SelectedIndex = cmbHostTables.FindStringExact(_hostTable.Name); PopulateHostColumnsCombo(); } cmbHostTables.Enabled = (_hostTable != null && Mode == TableKeyEditorMode.SingleTable); //Populate reference tables combo DbCmd.PopulateUserDefinedTablesCombo(cmbRefTables, _cp, -1); //Populate foreign keys combo box DbCmd.PopulateForeignKeysComboSimple(cmbFk, _cp, _hostTable != null ? _hostTable.ID : -1); //Select first item in the foreign keys combo box if (cmbFk.Items.Count > 0) { if (renderLast) { cmbFk.SelectedIndex = cmbFk.Items.Count - 1; } else { cmbFk.SelectedIndex = 0; } ForeignKeyWrapper fk = cmbFk.SelectedItem as ForeignKeyWrapper; if (fk != null && !fk.AllPropsLoaded) { fk.LoadAllProperties(); } RenderKeyProperties(); } else { cmbFk.SelectedIndex = -1; } } finally { _initializing = false; if (cmbFk.Items.Count == 0) { InitializeNewKey(); } } }