очевидно, в вашем файле ts
нет columns
декларации
<tr [pSelectableRow]="rowData" class="tr-click" (click)="getSelected(rowData)">
<td *ngFor="let col of columns">
{{car[col.field]}}
</td>
</tr>
-
<tr [pSelectableRow]="rowData" class="tr-click" (click)="getSelected(rowData)">
<td *ngFor="let col of cols">
{{car[col.field]}}
</td>
</tr>
Редактировать: вы подписываетесь на асинхронный метод с подпиской, но вы пытаемся сделать назначения после подписки. из-за этого ваша функция не ждет окончания подписки. Решение вашей проблемы:
this.studentService.getStudents().subscribe(data => {
this.searchResults = data;
// table columns
this.cols = [
{ field: 'studentId', header: 'Student ID'},
{ field: 'name', header: 'Name'},
{ field: 'dob', header: 'Date of Birth'},
{ field: 'status', header: 'Status'}
];
// tested the object with these
alert('1: ' + JSON.stringify(this.searchResults)); // undefined
alert('2: ' + this.searchResults); // undefined
alert('3: ' + this.searchResults.toString); // undefined
});
Вы могли экспортировать DataGridView в Excel и затем распечатать его от Excel.
Вы могли также рассмотреть, чтобы не показать Ваши данные в DataGridView, но показать его в управлении ReportViewer, которое имеет способность экспортировать в PDF или Excel. Оттуда возможно распечатать Ваши данные.
Существуют проекты на CodeProject, которые сделали некоторую печать работы DataGridViews.
Нет никакой встроенной поддержки печати, я боюсь.
Вы могли бы обратиться к использованию стороннего управления такой как Infragistics WinGrid, который имеет сборку - в поддержке печати.
. СЕТЕВЫЕ средства управления WinForm (как datagridview) исходно не поддерживают быть распечатанным.
В случае datagridview, тем не менее, можно назвать 'DrawToBitmap', и затем взять тот битовый массив и передать его на функции печати для создания его на бумаге.
Если Вы собираетесь быть печатью больше, чем просто DataGridViews, то более универсальный подход может стоить преследовать. Мы используем MigraDoc и затем записали нашему собственному классу чтения DataGridViews и произвели классы MigraDoc, представляющие таблицу.
существует много больших доступных пакетов печати, но у меня только есть опыт с MigraDoc.
Редактирование:
В ответ на комментарии, вот ссылка на мой сайт, показывающий код, который я создал для генерации таблиц MigraDoc и примера использования его для отображения DataGridView ( DataGridView к таблицам MigraDoc ).
Добавьте DataGridView, PrintDocuemnt и кнопку, затем:
button click events {
printDocument1.Print();
}
printDocument1_PrintPage events {
Bitmap bm = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height);
this.dataGridView1.DrawToBitmap(bm, new Rectangle(0, 0, this.dataGridView1.Width, this.dataGridView1.Height));
e.Graphics.DrawImage(bm, 0, 0);
}
Вот и все, что вам нужно для печати данных.
Я знаю, что вы уже приняли ответ, но для следующего человека, который будет искать этот вопрос ...
Я также нашел этот замечательный проект в Code Project и только что реализовал его. Было ЛЕГКО и приятно. http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx