Czasami masz sytuację, w której musisz skonfigurować raport internetowy do innego źródła danych. Może to być konieczne, jeśli raport został opracowany przy użyciu testowej bazy danych lub baza danych po prostu została "przeniesiona" do innej lokalizacji. A może na odwrót musisz połączyć raport z danymi testowymi. Tak czy inaczej, możliwość ponownego skonfigurowania ciągu połączenia jest bardzo przydatna. W FastReport.Net zrobienie tego jest bardzo proste. Opowiem Ci jak to zrobić.
Weźmy przykład aplikacji ASP.Net Core. Przypomnę, że naszym zadaniem jest przeniesienie z części klienta linii połączenia do raportu. Istnieją dwa sposoby, aby to zrobić: przenieść ustawienie do raportu i skryptu raportu, aby zastąpić linię połączenia lub zastąpić linię połączenia bezpośrednio w kontrolerze sieci web aplikacji. Druga droga jest bardziej racjonalna. Zaraz to wyjaśnie.
Kontroler użyje metody Index. W tym miejscu utworzymy obiekt raportu i przypiszemy nowy ciąg połączenia. W związku z tym metoda podejmie parametr - parametry połączenia.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class HomeController : Controller { public IActionResult Index(string connstring) { WebReport webReport = new WebReport(); if (connstring is null) { webReport.Report.Load("reports/Empty.frx"); } else { webReport.Report.Load("reports/Master-Detail.frx"); webReport.Report.Dictionary.Connections[0].ConnectionString = connstring; } ViewBag.WebReport = webReport; return View(); } } |
Metoda indeksu przyjmuje parametr Constring, który jest początkowo przy starcie jest równa null. Aby zaraportować wyskakujące błędy lub nieprawidłowości w trakcie wyświetlania strony, należy pobrać go do szablonu raportu. Ponieważ parametry połączenia nie są jeszcze znane, należy zostawić pusty szablon. Po ustawieniu ciągu połączenia, możemy załadować żądany szablon raportu i ponownie zdefiniować go w ciągu połączenia. Wszystko jest bardzo proste.
Jeśli szablon raportu początkowo nie ma połączenia ze źródłem danych, można go dodać. Oto przykład, aby połączyć się z bazy danych MSSQL:
1 2 3 4 5 6 |
RegisteredObjects.AddConnection(typeof(MsSqlDataConnection)); MsSqlDataConnection sqlConnection = new MsSqlDataConnection(); sqlConnection.ConnectionString = connstring; sqlConnection.CreateAllTables(); webReport.Report.Dictionary.Connections.Add(sqlConnection); webReport.Report.Load("reports/CoreMSSQL.frx"); |
Opcja Index method powinna mieć odpowiedni widok. Dodaj następujący kod:
W tym miejscu użyliśmy formularza, który odwołuje się do Opcja Index method. Posiada pole tekstowe z nazwą i przyciskiem constring. Zawartość pola tekstowego zostanie przekazana jako parametr do metody.
Teraz zobaczmy, co nam wyszło:
Początkowo wiersz połączenia nie został ustawiony, więc szablon pustego raportu został przekazany. Spróbujmy wprowadzić wiersz połączenia do bazy danych xml:
«XsdFile=;XmlFile=C:\\Users\\Dimon\\source\\repos\\PassConnectionstring\\PassConnectionstring\\reports\\nwind.xml»
Teraz otrzymujemy raport:
W ten sposób zawsze można wyjść z sytuacji, w której raport nie może połączyć się ze źródłem danych, ze względu na jego niedostępność.