Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Come gestire una casella di testo tramite codice in un report viewer
Forum - C# / VB.NET - Come gestire una casella di testo tramite codice in un report viewer

Avatar
alip1 (Normal User)
Pro


Messaggi: 139
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 9:55
Martedì, 11/01/2022
Ho un report disegnato tramite SSRB 3.0.
Il report é di tipo .rdl per cui tramite codice VB.NET e Report Viewer viene agganciato e visualizzato.
Il data set é gestito in modo dinamico in modo da poter filtrare i record in base alle esigenze dell'utente.

Il report è molto semplice ha:
1) una intestazione di pagina con una casella di testo (TestataREp) con il valore: 'LISTA ATTIVITà';
2) nel corpo una tabella che visualizza i record in base al dataset;
3) un piè di pagina con la numerazione delle pagine.

Poichè i dati da visualizzare vengono filtrati secondo le scelte dell'utente, vorrei poter cambiare in modo dinamico il valore della textbox  (la TestataRep) nell'intestazione di pagina, ma non so come fare.

In pratica vorrei, ad esempio, che la testata potesse essere cambiata, via codice vb.net, da 'LISTA ATTIVITà' in 'LISTA ATTIVITà del gruppo xxxx'
oppure in 'LiSTA ATTIVITà Personali' ecc. ecc.
Non so se sono riuscito a spiegarmi.
Grazie per ogni utile consiglio.

PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 139
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 10:25
Venerdì, 21/01/2022
Buongiorno a tutti.
Mi sono reso conto che la problematica sollevata non ha prodotto alcun suggerimento.
Quindi ho cercato documentazione in microsoft e dopo vari tentativi a vuoto ho trovato la soluzione.
Se è gradita ai più mi permetto di mostrare ciò che ho fatto sperando di essere di aiuto ad altri.

Intanto preciso che lho utilizzato VS2012 progetto in VB e per il design del report ho utilizzato Report Builder 3.0.

Soluzione:


In un form (con nome frmrepListAttivita) ho aggiunto un oggetto ReportViewer con nomeo: rpListaAttivita.
all'oggetto rpListaAttivita ho settato tutti i valori necessari:
         FileRepName , FileRepEsterno , PathFileRep , SQLSelect , DataSetName , SetMargini, Orientazion
dall'ovvio significato .
Il report è stato progettato con Report Buildel 3.0 che mi ha creato un file esterno con suffisso .rdl.
Nel report è stato semplicemente  definito un parametro di nome SottoTitolo.

Nella sezione di intestazione del report oltre ad una textbox con il titolo statico del report ho aggiunto subito sotto
una'altra textbox cui però ho associato come valore il parametro (tramite fx si seleziona nell'apposita finestra..) ed ugualmente
nel campo espressione descrizione.

Nel form contenente il ReportViewer ( rpListaAttivita ) ho definito sia una variabile stringa stSottoTitolo
che viene settata con il valore desiderato.

Nell'evento load del form (frmrepListAttivita) dopo aver settato le diverse proprietà del report (rplistaAttivita) ho aggiunto le seguenti due righe di codice:

    
Codice sorgente - presumibilmente Plain Text

  1. ....
  2.          SettaSottoTitolo()                          ----> routine sottostante
  3.          Me.rpListaAttivita.RefreshReport()   ----> aggiorna il report , lo carica e lo visualizza
  4.          .....



Codice sorgente - presumibilmente VB.NET

  1. Private Sub SettaSottoTitolo()
  2.       If vdatiFilterRep.SottoTitolo = "" Then Exit Sub   ' se non c'è un sottotitolo non fa nulla
  3.       Dim stSottoTitolo = vdatiFilterRep.SottoTitolo     ' setta il valore che è stato valorizzato in un oggetto appositamente strutturato vedi dopo..
  4.       Dim P1 As ReportParameter = New ReportParameter()  ' definisco una var di tipo reportparameter
  5.       P1.Name = "SottoTitolo"                            'gli assegno il nome del parametro (deve essere uguale a quello cui fa riferimento la casella di testo nel report
  6.       P1.Values.Add(stSottoTitolo)                       'assegno al parametro il valore desiderato (in questo caso il valore di tipo stringa è in variabile)
  7.  
  8.       'Passaggio dei parametri al Report.
  9.       Me.rpListaAttivita.LocalReport.SetParameters(New ReportParameter() {P1})  ' passo il parametro al report
  10.  
  11. end sub


'*********** nota aggiuntiva ****
la varabile vdatifilterRep è un oggetto di tipo DatiFilterRepCS

la classeDatiFilterRepCS  è così definita con ovvio significato. Alle variabili private corrispondono proprietà pubbliche con lo stesso nome ma senza il prefisso m_ .
Tali proprietà non sono riportate per brevità.

Codice sorgente - presumibilmente VB.NET

  1. Public Class DatiFilterRepCS
  2.    '**************
  3.    'Dichiarazioni
  4.    '**************
  5.    '*******Paramentri e valori da inserire **********
  6. #Region "Proprietà"
  7.    
  8.    '**** proprietà oggetto attività da utilizzare come filtri
  9.    Private m_oggettoAtt As String
  10.    Private m_stDataInizioAtt As String
  11.    Private m_stDataScadenzaAtt As String
  12.    Private m_DataScadenzaAtt As Date
  13.    Private m_stato As String
  14.    Private m_fkCreataDa As Integer
  15.    Private m_fkAssUser As Integer
  16.    Private m_fkGroup As Integer
  17.    Private m_fkGestitaDa As Integer
  18.    Private m_GruppoName As String
  19.  
  20.    Private m_flagPersonale As Boolean
  21.    Private m_gruppi As Boolean
  22.    Private m_Completate As Boolean
  23.    Private m_Attive As Boolean
  24.    Private m_Nuove As Boolean
  25.    Private m_Tutte As Boolean
  26.  
  27.    '*** specifiche per l'oggetto report ****
  28.    Private m_FileRepName As String
  29.    Private m_sqlSelect As String
  30.    Private m_DataSetName As String
  31.    Private m_SottoTitolo As String
  32. #End Region
  33. .....
  34. end class



Mi scuso se non è chiaro. Buon lavoro a tutti:hail:

Ultima modifica effettuata da alip1 il 21/01/2022 alle 10:32
PM Quote