public override object GetValue(БромКлиент client = null) { ТаблицаЗначений result = new ТаблицаЗначений(); if (this.Column != null) { foreach (var column in this.Column) { result.Колонки.Добавить(column.Name); } } if (this.Row != null) { foreach (var row in this.Row) { dynamic temRow = result.Добавить(); if (row.Property != null) { foreach (var property in row.Property) { temRow[property.Name] = property.GetValue(client); } } } } return(result); }
public ValueTable(ТаблицаЗначений value) { if (value == null) { throw new System.ArgumentNullException("value"); } this.Column = new DataTableColumn[value.Колонки.Count]; for (int i = 0; i < value.Колонки.Count; i++) { DataTableColumn columnSOAP = new DataTableColumn(); columnSOAP.Name = value.Колонки[i].Имя; this.Column[i] = columnSOAP; } this.Row = new DataTableRow[value.Count]; for (int i = 0; i < value.Count; i++) { DataTableRow rowSOAP = new DataTableRow(); rowSOAP.Property = new ValueBase[value.Колонки.Count]; for (int j = 0; j < value.Колонки.Count; j++) { КолонкаКоллекцииЗначений column = value.Колонки[j]; ValueBase property = ValueBase.From(((dynamic)value[i]).GetByColumn(column)); property.Name = column.Имя; rowSOAP.Property[j] = property; } this.Row[i] = rowSOAP; } }
internal void ЗагрузитьДанные(ТаблицаЗначений таблица) { IEnumerable <string> поляТаблица = таблица.Колонки.Наименования(); IEnumerable <string> поляТаблЧасть = this.metadata.НайтиПодчиненный("Реквизиты").GetDynamicMemberNames(); IEnumerable <string> общиеПоля = поляТаблЧасть.Intersect(поляТаблица, StringComparer.OrdinalIgnoreCase); this.rows.Clear(); foreach (dynamic стр in таблица) { СтрокаТабличнойЧасти новСтр = this.ДобавитьСтроку(); foreach (string имяПоля in общиеПоля) { новСтр.УстановитьЗначение(имяПоля, стр[имяПоля]); } } }
/// <summary> /// Выгружает табличную часть в таблицу значений (<see cref="ITworks.Brom.Types.ТаблицаЗначений"/>). /// </summary> /// <returns>Возвращает таблицу значений, содержащую данные табличной части.</returns> public ТаблицаЗначений Выгрузить() { ТаблицаЗначений таблица = new ТаблицаЗначений(this.Count); IEnumerable <string> именаПолей = this.metadata.Найти("Реквизиты").GetDynamicMemberNames(); foreach (string имяПоля in именаПолей) { таблица.Колонки.Добавить(имяПоля); } foreach (dynamic стр in this.rows) { dynamic новСтр = таблица.Добавить(); foreach (string имяПоля in именаПолей) { новСтр[имяПоля] = стр[имяПоля]; } } return(таблица); }
internal СтрокаТаблицыЗначений(ТаблицаЗначений таблица) : base(таблица) { }