2009-05-19 21 views
6

Jak mogę zintegrować ReportViewer w projekcie asp.net MVC?Źródło danych Reportviewer w asp.net-mvc

Chcę dodać obiekty biznesowe o przestrzeni nazw MVCProject.Model. ReportViewer zezwala na obiekty biznesowe DataSet.

Czy można wybrać inne źródło danych, np. LinqDataSource, lub obiekty obiektów LINQ-SQL do obiektów Direct LINQ?

Jakie byłoby najlepsze rozwiązanie do dodawania raportów w projekcie MVC?

Odpowiedz

1

To będzie trudne. Po pierwsze, potrzebujesz ViewState, więc będziesz musiał umieścić raport na zwykłej stronie WebForms. Nie jest to jednak takie złe - WebForms i MVC działają dobrze obok siebie.

Część trudna jest powiązana z rzeczywistymi obiektami IEnumerable, a nie z obiektami typu Object-Source.

Pierwszym krokiem jest zbudowanie modelu danych raportu. Możesz to zrobić w kodzie, z zapytaniami, cokolwiek, jak chcesz. Struktura coś takiego (ale oczywiście znacznie większe) jest typowa:

public class ReportSource 
{ 
    public Floogle[] Floogles { get; set; } 
} 

public class Floogle 
{ 
    public Doodad[] Doodads { get; set; } 
    public string Text { get; set; } 
} 

public class Doodad 
{ 
    public int Number { get; set; } 
} 

Sztuką jest wykorzystanie kontroli BindingSource w raporcie i ustawić właściwość DataSource do typeof(ReportSource) - tak, źródłem danych jest rodzaju telefonu model raportu.

Podczas projektowania raportu nie otrzymasz dużo bogactwa, ale będziesz w stanie to zrobić.

Jeśli chodzi o rozwiązania w zakresie raportowania stron trzecich, uznaliśmy Telerik za najlepszą opcję.

+0

Gdzie dokładnie mogę użyć tego źródła BindingSource? – AndreMiranda

+0

Po pierwsze, przykro mi, że musisz pracować z tym okropnym narzędziem. BindingSource to "kontrola", którą możesz "przeciągnąć" na powierzchnię projektanta. –

+0

MVC nie jest przeznaczony do sterowania opcjami typu "przeciągnij i upuść".Pewnie, że możesz "zhakować" je do pracy z MVC (ponieważ MVC jest wciąż budowane na tej samej podstawie co formularze internetowe), ale jest sprzeczne z paradygmatem MVC, więc nie jest zalecane. Odpowiedź Shiraza jest dobra, jeśli masz już raporty, których musisz użyć z MVC. –

2

Alternatywnym sposobem na zrobienie tego byłoby wygenerowanie raportu na serwerze raportowania, a następnie przesłanie go do aplikacji mvc w postaci pliku PDF.

0

Mam mały projekt, który wyrzuciłem na codepleksie, który jest projektem mvc z raportem.

http://mvctaskmanagement.codeplex.com/

zasadzie odkąd robić dev na polu XP, moja forma internetowej musiał się zepchnięci do odrębnego projektu. Ponieważ mam warstwę usługi proj, umieściłem ją tam.

Stamtąd wywołuję mój raport za pośrednictwem posta ajaxowego, wysyłającego parametry na stronę raportu, która następnie przekazuje je do tej samej warstwy usługi, która została użyta do wygenerowania podglądu.

Powodzenia!

2

Mam pomysł, który nie jest testowany, ale może działać. 1- Umieść kontrolkę Podgląd raportu na standardowej stronie formularza sieci ASP.Net (np. ReportViewer.aspx) 2- Pod swoim MVC dodaj element iframe, który odwołuje się do tej strony ReportViewer.aspx 3- Przekaż parametry do strony za pomocą sesji lub ciągi zapytań

Daj mi znać, jeśli to działa

+0

To jest mój obecny - okropny - pomysł. Jestem pewien, że to zadziała, ale wolałbym mieć coś bardziej eleganckiego. – vbullinger

Powiązane problemy