2011-05-24 14 views
6

Estoy tratando de encontrar la forma de diseñar un informe utilizando mi propia clase personalizada.Uso de la lista de objetos de clase personalizados como fuente de datos para el informe de cristal

He encontrado enlaces:

1.) How to work in Crystal Report with Object Data Source?

2.) Use .net object as data source in Crystal Report 2008

3.) Binding object with List<> to Crystal Report

4.) How to assign Custom class as datasource in crystal report

estaban bastante útil, pero Me he quedado atrapado en el primer paso al diseñar el informe como propiedad de mi clase personalizada i s no figura en la lista de campos de la vista de diseño de informes de cristal.

muestra de mi clase personalizada:

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 

Cuando agrego mis objetos de la clase de informe de cristal que no se deje el campo de tipo de usuario de la clase de usuarios en lista de campos.

Entonces, ¿cómo puedo agregar un campo de tipo de usuario a mi lista de campos? ¿O tengo que tomar otro enfoque?

Editar:

La razón por la que quería utilizarlo como soy: 1.
) que muestra una forma donde el usuario puede escribir la palabra clave
2. Programa) filtra los registros según las palabras clave usando LINQ
3.) cuando el usuario hace clic en el botón de impresión, quiero establecer los registros filtrados como fuente de datos de mi informe

Respuesta

0

Usted podría intentar serializar el objeto a XML, el suministro de un XSD, a continuación, utilizar el controlador XML de Crystal Report para conectarse a eso. El informe "verá" el objeto como dos tablas: una para el usuario y otra para UserType. Incluirá ambas 'tablas' en el informe y vinculará las tablas con el campo internal_id.

+0

¿cómo podemos serializar objetos a xml en tiempo de diseño? o lo hacemos en tiempo de ejecución? – KoolKabin

+0

Para diseñar el informe, puede usar documentos XML y XSD "estáticos". En tiempo de ejecución, puede apuntarlo a una URL que devuelve los dos documentos o usar este enfoque: http://dotnetslackers.com/articles/xml/ReportingXMLDataUsingCrystalReportsAndWindowsForms.aspx – craig

0

¿Por qué no asigna un conjunto de datos fuertemente tipado a su informe y se ahorra muchos problemas?

+0

¿Concuerda esto con mi trabajo de crteria ... puede proporcionar algunos ¿enlazar? – KoolKabin

1
  • Crear el conjunto de datos con las columnas que coincidan con su clase y asignar el conjunto de datos a su informe normalmente.
  • cuando usted tiene su clase de objeto cargado de datos y/o filtrada con los valores introducidos por los usuarios (filtrada con LINQ, etc ..) hacer esto:

    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) 
    
Cuestiones relacionadas