Дайте пример работы с Dataset & Table1

отредактировано November 2015 Раздел: FastReport .NET
Приветствую. Прошу с отнестись с пониманием, т.к. практики в C# мало. Перечитал Мануал пользователя, программиста, описание классов. Но не хватает примером как решить мою задачу,а именно по работе со строками и ячейками таблицы.
Дан DataSource. паче 120 колонок. Количество строк переменное.

Мне для отчета надо оставить только 9.


При этом выбирать не все строки таблицы, только те, что соответствую определенному условию.
(Пользователь на форме в дереве XtraTreeList1.TreeList ставит галочки, на против нужных позиций, которые будут сравниваться со значениями строк ДатаСорса в двух колонках.)

При том значения в промежуточные строках DataSource нужно отбросить либо суммировать в каком-то месте. В зависимости от условия, и перед срабатыванием условия, создавать строку в таблице, куда итог суммированных ячеек вставлять.

Я создал набор данных
DataSet  ds = new DataSet("ds1");
потом таблицу
DataTable dt = new DataTable("t1");
добавил в неё 9 колонок
dt.Columns.Add("ID", typeof(int));
      dt.Columns["ID"].Unique = true;
      dt.Columns["ID"].AutoIncrement = true;
      dt.Columns["ID"].AutoIncrementSeed = 1;
      dt.Columns["ID"].AutoIncrementStep = 1;
      dt.Columns.Add ("K1", typeof(string));
      dt.Columns.Add ("K2", typeof(string));
      dt.Columns.Add ("S", typeof(string));
      dt.Columns.Add("R", typeof(string));
      dt.Columns.Add ("E", typeof(string));      
      dt.Columns.Add("D", typeof(double));
      dt.Columns.Add("M1_F", typeof(double));
      dt.Columns.Add("M1_H", typeof(double));
В событии заполнения бэнда
private void Data1_BeforePrint(object sender, EventArgs e)
Добавил строки в таблицу
dt.Rows.Add(Row#,_K1 ,_K2,_S,_R,_E,_D,_M1_F,_M1_H);

Добавил таблицу в набор
ds.Tables.Add(dt);
Зарегистрировал в отчете (кроме того , там есть конструктор можно было набор не создавать, а просто указать таблицу dt)
   Report.RegisterData( ds.Tables[0],"dt");
Создал объект содержащий данные таблицы
DataSourceBase rowData = Report.GetDataSource("dt");

:) И тут я не понял как в Table1 к примеру подсунуть эти данные
метод вроде getData есть, но пишут что не пользуйте.
addChild тоже не пошел.

увернулся пока через
Table1.ColumnCount =  dt.Columns.Count;

Table1.RowCount = dt.Rows.Count+1;

А дальше циклом заполнил эти ячейки спомощью массива, как обычную матрицу. Еще приводить к строке пришлось.
Получилась табличка.
Но почему-то ячейки созданные, выходят без границ. Видимо надо создавать класс Border настраивать его и присваивать каждой ячейке. Я решил пока взять эти настройки с самой таблицы
//Прохожу  все строки в таблице - начинаю с 0й строки там где обычно шапка.
for (int i =0; i <dt.Rows.Count; i++){
//Перечисляю все колонки в таблице
  for ( int cell = 0;cell < dt.Columns.Count; cell++) 
     {   //прихватываю оформление бортов, как в таблице
        Table1.Rows[i][cell].Border = Table1.Border;
    //Заполняю текст ячеек 
    Table1.Rows[i][cell].Text = ToString(dt.Rows[i].ItemArray[cell]);
    }
        
        
        //Печать строки и колонок
        Table1.PrintRow(i);
        Table1.PrintColumns();
}

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.