public void SaveModifiedFiles() { foreach (DataCell cell in mModifiedCells) { ColumnBehavior behavior = mDataTable.GetColumnBehavior(cell.Column); behavior.SaveCell(mModifiedFiles, cell.Row, cell.Row[cell.Column]); } // Save ingredient rows all at once because unlike other cells, an ingredient // does not map to a unique key in json. We rewrite the entire json array all at once var ingredientRows = mModifiedCells .Where(e => mDataTable.GetColumnBehavior(e.Column).IsIngredientColumn) .Select(e => e.Row) .Distinct() .ToList(); foreach (var row in ingredientRows) { SaveIngredients(mModifiedFiles, row); } foreach (JsonFileData modified in mModifiedFiles) { modified.TrySetFlatFileData(modified.Json.ToString()); modified.TrySaveFile(); } mModifiedFiles.Clear(); mModifiedCells.Clear(); unsavedFilesLabel.Visible = false; currentStateUndoIndex = mUndoStack.Count(); }
private void ConfigureColumnsAfterRender() { for (int i = 0; i < recipesGridView.Columns.Count; i++) { DataGridViewColumn column = recipesGridView.Columns[i]; DataColumn dataColumn = mDataTable.Columns[i]; ColumnBehavior colBehavior = mDataTable.GetColumnBehavior(dataColumn); colBehavior.ConfigureColumnAfterRender(column, recipesGridView); } }
private void ConfigureColumns() { for (int i = 0; i < recipesGridView.Columns.Count; i++) { DataGridViewColumn column = recipesGridView.Columns[i]; DataColumn dataColumn = mDataTable.Columns[i]; ColumnBehavior colBehavior = mDataTable.GetColumnBehavior(dataColumn); // Add combo boxes for columns that have a predetermined set of valid values DataGridViewColumn replacementColumn = null; if (colBehavior is IngrNameColumnBehavior) { DataGridViewComboBoxColumn newColumn = new DataGridViewComboBoxColumn(); newColumn.Name = column.Name; newColumn.DataPropertyName = column.DataPropertyName; newColumn.AutoComplete = false; newColumn.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing; newColumn.DataSource = GetAutoCompleteStrings(newColumn.Name); newColumn.SortMode = DataGridViewColumnSortMode.Automatic; replacementColumn = newColumn; } else if (colBehavior is BooleanColumnBehavior) { var newColumn = new DataGridViewCheckBoxColumn(); newColumn.Name = column.Name; newColumn.DataPropertyName = column.DataPropertyName; newColumn.SortMode = DataGridViewColumnSortMode.Automatic; replacementColumn = newColumn; } if (replacementColumn != null) { recipesGridView.Columns.RemoveAt(i); recipesGridView.Columns.Insert(i, replacementColumn); mComboBoxColumns.Add(i); column = replacementColumn; } // Configure columns based on column behavior colBehavior.ConfigureColumn(column); } }
internal void AddDataColumn(string name, Type valueType, ColumnBehavior behavior) { Columns.Add(new DataColumn(name, valueType)); mKeyToColumnBehavior.Add(name, behavior); }