public override void ОбновитьЗначения() { base.BeginUpdate(); for (int i = 1; i <= base.RowCount; i++) { for (int j = 1; j <= base.ColCount; j++) { GridStyleInfo info = base[i, j]; if ((info.CellType != "FormulaCell") && ((info.Tag != null) && (this.ЯчейкиМетаструктуры != null))) { string str2 = ЯчейкаМетаструктуры.ПолучитьКодЯчейки(info.Tag.ToString()); if (this.ЯчейкиДанных.СодержитИндекс(str2)) { ТипЯчейки ячейки = this.ЯчейкиДанных[str2]; if (ячейки != null) { if (ячейки is СсылочныйТип) { info.CellValue = (ячейки as СсылочныйТип).ЗначениеСтрокой; } else { info.CellValue = ячейки.Значение; } } else { info.CellValue = null; } } } } } base.EndUpdate(); }
protected override void OnSaveCellInfo(GridSaveCellInfoEventArgs e) { int rowIndex = e.RowIndex; int colIndex = e.ColIndex; if ((rowIndex > 0) && (colIndex > 0)) { GridStyleInfo style = e.Style; if ((style.Tag != null) && (this.ЯчейкиДанных != null)) { string str = ЯчейкаМетаструктуры.ПолучитьКодЯчейки(style.Tag.ToString()); if (this.ЯчейкиДанных.СодержитИндекс(str)) { ТипЯчейки ячейки = this.ЯчейкиДанных[str]; if (style.CellType == "FormulaCell") { ячейки.Значение = e.Style.FormattedText; } else { if (ячейки is СсылкаНаСправочник) { if (e.Style.CellValue is ЗаписьСправочника) { ячейки.Значение = e.Style.CellValue; e.Style.Text = (ячейки as СсылкаНаСправочник).ЗначениеСтрокой; } if (e.Style.CellValue == null) { ячейки.Значение = null; e.Style.Text = string.Empty; } } else { ячейки.Значение = e.Style.Text; } base.ЭкраннаяФорма.ДанныеИзменились = true; if (ячейки.ТолькоЧтение) { this.УстановитьСтильЯчейкиТолькоЧтение(style); } else if (ячейки.Описание.ОбязательноДляЗаполнения) { this.УстановитьСтильОбязательнойДляЗаполненияЯчейки(style, ячейки.ЗначениеЗаполнено); } else if ((base.ВариантОткрытия == ВариантОткрытияФормы.Чтение) || (base.ВариантОткрытия == ВариантОткрытияФормы.СводнаяФормаБезРедактирования)) { base.УстановитьСтильНередактируемойЯчейки(style); } else { base.УстановитьСтильРедактируемойЯчейки(style); } } } } } }
protected override void ПроанализироватьЯчейку(ЯчейкаТаблицыОтчетнойФормы Ячейка, int Row, int Col) { GridStyleInfo info = base[Row, Col]; if (Ячейка.Формула) { base.УстановитьСтильАвтоблока(info); } else if (!string.IsNullOrEmpty(Ячейка.Значение)) { if (Ячейка.Значение.StartsWith("@")) { base.УстановитьСтильКнопки(info, Ячейка.Значение); } info.EndUpdate(); return; } if (Ячейка.Переменная != null) { info.Tag = Ячейка.Переменная; string key = ЯчейкаМетаструктуры.ПолучитьКодЯчейки(Ячейка.Переменная); if (this.ЯчейкиМетаструктуры.ContainsKey(key) && !Ячейка.Формула) { Type type = this.ЯчейкиМетаструктуры[key].ТипЗначения; info.BeginUpdate(); try { base.УстановитьТипЯчейки(info, type, this.ЯчейкиМетаструктуры[key].Описание); if ((base.ВариантОткрытия == ВариантОткрытияФормы.Чтение) || (base.ВариантОткрытия == ВариантОткрытияФормы.СводнаяФормаБезРедактирования)) { base.УстановитьСтильНередактируемойЯчейки(info); } else if (this.ЯчейкиДанных[key].Описание.ОбязательноДляЗаполнения) { base.словарьОбязательныхДляЗаполненияЯчеек.Add(key, this.ЯчейкиДанных[key]); this.УстановитьСтильОбязательнойДляЗаполненияЯчейки(info, false); } else if (this.ЯчейкиДанных[key].ТолькоЧтение) { this.УстановитьСтильЯчейкиТолькоЧтение(info); } else { base.УстановитьСтильРедактируемойЯчейки(info); } if (this.ЯчейкиДанных.СодержитИндекс(key)) { ТипЯчейки ячейки = this.ЯчейкиДанных[key]; if (ячейки != null) { if (ячейки is СсылочныйТип) { info.CellValue = (ячейки as СсылочныйТип).ЗначениеСтрокой; } else { info.CellValue = ячейки.Значение; } } else { info.CellValue = null; } } } finally { info.EndUpdate(); } } } }