Использование списка пользовательских объектов класса в качестве источника данных для отчета Crystal - PullRequest
6 голосов
/ 24 мая 2011

Я пытаюсь найти способ создать отчет, используя мой собственный класс.

Я нашел ссылки:

1.) Как работать в Crystal Report с источником данных объекта?

2.) Использовать.Чистый объект как источник данных в Crystal Report 2008

3.) Привязка объекта со списком <> к отчету Crystal

4.) Какназначить пользовательский класс в качестве источника данных в Crystal Report

Они были весьма полезны, но я застрял на первом шаге при разработке отчета, поскольку свойство моего пользовательского класса не указано в списке полей представления конструктора Crystal Report..

Пример моего пользовательского класса:

class UserType
    public property UIN as integer...
    public property Title as string...
end class
class User
    public property UIN as Integer...
    public property Name as string...
    public property Password as String...
    public property Type as UserType...
end class

Когда я добавляю свои объекты класса в отчет Crystal, я не получаю поле usertype из класса users в списке полей.

Так как я могу добавить поле типа пользователя в свой список полей?Или я должен использовать другой подход?

Редактировать:

Причина, по которой я хотел использовать это как я:
1.) Показ формы гдепользователь может ввести ключевое слово
2.) программа фильтрует записи по ключевому слову, используя LINQ
3.) когда пользователь нажимает кнопку печати, я хочу установить отфильтрованные записи в качестве источника данных моего отчета

Ответы [ 3 ]

1 голос
/ 25 апреля 2012
  • Создайте свой набор данных со столбцами, соответствующими вашему классу, и назначьте набор данных для своего отчета в обычном режиме.
  • Если ваш класс объектов загружен данными и / или отфильтрован значениями, введенными пользователями (отфильтрованы с помощью linq и т. Д.), Сделайте следующее:

    dim yourDataset as dataset ' this is your typed dataset
    Dim dr As datarow
    For n As Integer = 0 To yourClass.Count - 1
        dr = yourDataset.tables("TableName").NewRow
        dr("ColumnNameOne") = yourClass(n).PropertyName
        dr("ColumnNameTwo") = yourClass(n).PropertyName
    
        yourDataset.tables("TableName").Rows.Add(dr)
    Next
    
    ' bind the datasource
    crystalreport.SetDatasource(ds)
    
0 голосов
/ 29 июня 2011

Почему бы вам не назначить строго типизированный набор данных для своего отчета и избежать многих проблем?

0 голосов
/ 22 июня 2011

Вы можете попробовать сериализовать объект в XML, предоставить XSD, а затем использовать XML-драйвер Crystal Report для подключения к нему. Отчет будет «видеть» объект в виде двух таблиц: одна для пользователя и одна для типа пользователя. Вы включите обе таблицы в отчет и свяжете таблицы с помощью поля internal_id.

...