예제 #1
0
        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();
            }
        }
예제 #2
0
        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)
                    };
                }
            }
        }
예제 #3
0
 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;
 }
예제 #4
0
        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());
        }