public static FilterTreeNode AddRootNode(TreeView tree, Filter rootItem) { FilterTreeNode root = new FilterTreeNode(); root.Item = rootItem; tree.Nodes.Add(root); return root; }
protected override bool SetValue(int rowIndex, object value) { bool ret = false; string str = value as string; if (str != null) { if (string.IsNullOrWhiteSpace(str)) { if (this._item != null) { // delete item string message = "Вы действительно хотите удалить фильтр?\n" + "Все связанные с ним данные будут недоступны при анализе.\n\n" + "Продожить?"; DialogResult res = MessageBox.Show(message, "Удаление фильтра", MessageBoxButtons.OKCancel); if (res == DialogResult.OK) { DB.DBManager.DeleteItem(this._item); if (this._itemType == typeof(SpendFilter)) { SpendFilter item = (SpendFilter)this._item; DB.DBManager.SpendFilters.Where(kvp => kvp.Key.Id == item.Type).First().Value.Remove(item); } else { IncomeFilter item = (IncomeFilter)this._item; DB.DBManager.IncomeFilters.Remove(item); } this._item = null; if (this.ItemRemoved != null) this.ItemRemoved(this, new DataGridViewCellEventArgs(this.ColumnIndex, this.RowIndex)); } } ret = true; } else if (this._item == null) { // create new item if (_itemType == typeof(IncomeFilter)) { IncomeFilter item = new IncomeFilter(str); this._item = item; DB.DBManager.IncomeFilters.Add(item); } else if (_itemType == typeof(SpendFilter)) { var col = this.OwningColumn as DataGridViewFilterTypeColumn; var item = new SpendFilter(str, col != null ? col.FilterType.Id : null); this._item = item; DB.DBManager.SpendFilters[col.FilterType].Add(item); } DB.DBManager.CreateOrUpdateItem(this._item); ret = true; } else { // update existing this._item.Name = str; DB.DBManager.CreateOrUpdateItem(this._item); ret = true; } } else if (value is Filter) { this._item = (Filter)value; ret = true; } if (ret) RaiseCellValueChanged(new DataGridViewCellEventArgs(this.ColumnIndex, this.RowIndex)); return ret; }