private void UpdateCell(TextBox box) { if (!suppressCellUpdate) { DBCell cell = visibleCells[box]; // Spaghetti ducktyping? if (box.Text.EndsWith(".0") && double.TryParse(box.Text, out double dResult)) { DBInterface.db.records[cell.recordID + topRecordIndex].Set(cell.column, dResult); } else if (int.TryParse(box.Text, out int iResult)) { DBInterface.db.records[cell.recordID + topRecordIndex].Set(cell.column, iResult); } else if (double.TryParse(box.Text, out double dResult2)) { DBInterface.db.records[cell.recordID + topRecordIndex].Set(cell.column, dResult2); } else { DBInterface.db.records[cell.recordID + topRecordIndex].Set(cell.column, box.Text); } UpdateUnsavedChanges(true); Keyboard.ClearFocus(); } }
public async Task UpdateDBGrid() { for (int i = topRecordIndex; i < Math.Min(DBInterface.db.records.Count, topRecordIndex + visibleRecords); i++) { for (int j = 0; j < columns.Count; j++) { if (cellIndices.ContainsKey(new Tuple <int, int>(i - topRecordIndex, j))) { cellIndices[new Tuple <int, int>(i - topRecordIndex, j)].Text = Convert.ToString(DBInterface.db.records[i].Get(columns[j])); } else { var box = new TextBox() { Text = Convert.ToString(DBInterface.db.records[i].Get(columns[j])), FontSize = 14 }; DBGrid.Children.Add(box); cellIndices[new Tuple <int, int>(i - topRecordIndex, j)] = box; Grid.SetRow(box, i - topRecordIndex + 1); Grid.SetColumn(box, j); box.PreviewMouseDown += (obj, _) => HandleCellShiftClick((TextBox)obj); box.KeyDown += (obj, e) => HandleCellReturn((TextBox)obj, e); box.LostFocus += (obj, e) => HandleCellLostFocus((TextBox)obj); if (!visibleCells.ContainsKey(box)) { visibleCells[box] = new DBCell() { column = columns[j], recordID = i }; } } cellIndices[new Tuple <int, int>(i - topRecordIndex, j)].Background = new SolidColorBrush() { Color = GetCellAt(i - topRecordIndex, j).selected ? Color.FromRgb(210, 210, 210) : Color.FromRgb(255, 255, 255) }; } } }
public override DbParameter GetDBCellAsDBParameter(DbCommand cmd, DBCell cell) { SqlParameter param = (SqlParameter)cmd.CreateParameter(); param.ParameterName = cell.Name; if (cell.Type == DbDataType.Unknown) { param.SqlDbType = GetTypeAsDBType(cell.Type); } else { param.SqlDbType = GetTypeAsDBType(cell.Type); } if (cell.Value == null) { param.Value = GetNewValueForType(cell.Type); } else { param.Value = cell.Value; } return param; }
public async Task CreateNewDBGrid() { GC.Collect(); topRecordIndex = 0; DBGrid.RowDefinitions.Clear(); DBGrid.ColumnDefinitions.Clear(); DBGrid.Children.Clear(); cellIndices = new Dictionary <Tuple <int, int>, TextBox>(); visibleCells = new Dictionary <TextBox, DBCell>(); for (int i = 0; i < visibleRecords + 1; i++) { DBGrid.RowDefinitions.Add(new RowDefinition() { MaxHeight = 100 }); } columns = DBInterface.db.GetColumns(); for (int i = 0; i < columns.Count; i++) { DBGrid.ColumnDefinitions.Add(new ColumnDefinition() { MaxWidth = 100 }); var box = new TextBox() { Text = columns[i], FontSize = 14, Background = new SolidColorBrush(new Color() { R = 0xdd, G = 0xdd, B = 0xdd, A = 0xff }) }; box.PreviewMouseDown += (obj, _) => HandleColumnShiftClick((TextBox)obj); box.KeyDown += (obj, e) => HandleColumnReturn((TextBox)obj, e); box.LostFocus += (obj, e) => HandleColumnLostFocus((TextBox)obj); box.TextChanged += (obj, _) => HandleColumnTextChanged((TextBox)obj); if (!visibleCells.ContainsKey(box)) { visibleCells[box] = new DBCell() { column = columns[i], recordID = -1 }; } DBGrid.Children.Add(box); Grid.SetRow(box, 0); Grid.SetColumn(box, i); } DBGrid.ColumnDefinitions.Add(new ColumnDefinition()); }