Страница 1 из 2

Динамическая двумерная таблица или обращение к элементам crossData в цикле

Добавлено: 02 авг 2021, 18:14
molochnii
Здравствуйте!
Меня не покидает безумная идея создать динамическую таблицу, которая сама бы отрисовывала необходимое количество строк и столбцов. Днями и ночами я думаю об этом, и сейчас у меня возник вопрос, ответ на который я не нашел в интернете: можно ли задавать значения для каждого отдельного, уже отрисованного, элемента CrossData?
Тоесть по идее это последовательность анонимных типов, на сколько я могу судить, тогда может быть к ним можно обращаться после отрисовки на втором проходе через цикл foreach?
Для общего понимания ситуации приложил скрин.
Заранее благодарю за помощь!

Re: Динамическая двумерная таблица или обращение к элементам crossData в цикле

Добавлено: 03 авг 2021, 16:20
Aleksey
Здравствуйте,

Посмотрите следующий пример.

Спасибо.

Re: Динамическая двумерная таблица или обращение к элементам crossData в цикле

Добавлено: 03 авг 2021, 17:33
molochnii
Aleksey писал(а): 03 авг 2021, 16:20 Здравствуйте,

Посмотрите следующий пример.

Спасибо.
Это очень похоже на то что я ищу, нужно поизучать..
Спасибо!

Re: Динамическая двумерная таблица или обращение к элементам crossData в цикле

Добавлено: 04 авг 2021, 09:45
molochnii
Aleksey писал(а): 03 авг 2021, 16:20 Здравствуйте,

Посмотрите следующий пример.

Спасибо.
А скажите, откуда там берутся данные?
В вашем примере я удалил все колонки из Sheet1, но вывод информации при этом никак не изменился..

Далее я подставил свои данные в ваш пример. И там я столкнулся со следующими проблемами:
1)Данные выводятся, но там получается что одинаковые данные выводятся в столбик(видно на скрине)
2)Я не понимаю откуда берутся данные, ведь если я удаляю какой то столбец из словаря, то при выводе он всё равно остается, более того, выводится больше столбцов с данными чем у меня есть в словаре.

PS
Важное уточнение -
1)Я беру данные из приложения которое их генерирует.
2)На скрине видно, что первым столбцом выводится дата, в зависимости от этой даты должны подтягиваться соответствующие значения других столбцов. Тоесть есть зависимость между датой и значениями. Но поскольку я почти ничего не менял в вашем примере, он так же как и остальные столбцы выводит одно и тоже значение.

Re: Динамическая двумерная таблица или обращение к элементам crossData в цикле

Добавлено: 04 авг 2021, 10:18
Aleksey
Здравствуйте,

1. Задается количество колонок - общее количество за минусом информационных статических - к примеру, ID.

2. В событии BeforePrint берутся данные из источника через обращение напрямую к DataTable.

Спасибо.

Re: Динамическая двумерная таблица или обращение к элементам crossData в цикле

Добавлено: 04 авг 2021, 10:46
molochnii
Aleksey писал(а): 04 авг 2021, 10:18 Здравствуйте,

1. Задается количество колонок - общее количество за минусом информационных статических - к примеру, ID.

2. В событии BeforePrint берутся данные из источника через обращение напрямую к DataTable.

Спасибо.
А, тоесть для такой конструкции даже не обязательно создавать столбцы в словаре, верно?
Но тогда я хотел бы узнать следующее - можно ли при такой же конструкции обращаться не к сырым данным из DataTable, а к уже подготовленным в stimulsoft?

Re: Динамическая двумерная таблица или обращение к элементам crossData в цикле

Добавлено: 04 авг 2021, 11:03
molochnii
У меня получается так что создается N страниц, в зависимости от ID если допустим ID имеет значения от 1 до 7 - то 7 страниц.
Но подставив данные в ваш пример я заметил что формируются не только одинаковые данные по столбцам, но и каждая страница идентична всем остальным, за исключением ID.
Тоесть все имеющиеся страницы одинаковы, и на них меняется только ID

Re: Динамическая двумерная таблица или обращение к элементам crossData в цикле

Добавлено: 04 авг 2021, 12:51
molochnii
Вообщем у меня получилось справить с большинством проблем.
Сейчас мне нужно как то настроить вывод на разных страницах по разным ID

Re: Динамическая двумерная таблица или обращение к элементам crossData в цикле

Добавлено: 04 авг 2021, 14:16
molochnii
Окей,я добился вывода на разных страницах разной информации, там дело было в rowid, его значение обнулялось при создании новой страницы( потому что через 2 прохода его значение увеличивается в 2 раза,и тогда нумерация начинается уже с максимального значения), я (пока что) просто в формулу значения rowid добавил вычитание итогового числа всех строк, это, конечно, не правильно, но пока пойдет.
Теперь стоит другая задача - нужно убрать лишние столбцы. Тоесть не все столбцы должны быть выведены ,и потому лишние нужно убрать. Не подскажите, как это сделать лучше?
У меня пока только 1 вариант - сформировать список тех столбцов которые должны быть, и потом проверять, если столбец с таким именем не содержится в этом списке, то мне его нужно как то убрать - вопрос как..

Re: Динамическая двумерная таблица или обращение к элементам crossData в цикле

Добавлено: 04 авг 2021, 15:46
Aleksey
Здравствуйте,

Можно проверять как

Код: Выделить всё

if (Sheet1.DataTable.Columns[Line].ToString() != "col2")
{
	Variable1 = Sheet1.DataTable.Rows[rowid][Line].ToString();
}
else
	Variable1 = ""