3.910 messaggi dal 28 gennaio 2003
In un sito web ho la pagina a.aspx
Dalla pagina b.aspx vorrei fare la scansione dei controlli della pagina a.aspx.
Da dentro a riesco a farlo, ma non da b.

dim j as new a() non funziona

un aiuto?

Pietro
Se casti j a Page e poi recuperi la collection dei Controls?

Ormai programmano tutti... ma la professionalità appartiene a pochi
3.910 messaggi dal 28 gennaio 2003
Ciao.
Purtroppo non mi funziona

Pietro
La pagina "vive" quando viene inviata al browser.
Cosa ti aspetti di trovare?

I valori vengono passati da una pagina all'altra attraverso parametri su url, viewstate, session, application, cookie...

Ormai programmano tutti... ma la professionalità appartiene a pochi
3.910 messaggi dal 28 gennaio 2003
Ciao.
Sì, hai perfettamene ragione. Pensavo che si potesse farlo.
Ciao ancora.

Pietro
11.724 messaggi dal 09 febbraio 2002
Contributi
Ciao Pietro,
che intendi con "scansione dei controlli"? Vuoi semplicemente sapere come come si chiamano e di che tipo sono?

In questo caso, prova a usare la reflection sul tipo della pagina per vedere se i controlli sono dichiarati come campi privati.

Enjoy learning and just keep making
3.910 messaggi dal 28 gennaio 2003
Salute.
Riepilogo un poco.
Nella pagina ho un certo numero di RadioButtonList i cui id sono uguali ai nomi dei campi della tabella oracle che deve archiviare i dati.
Per un report debbo costruirmi dell'sql e il modo più semplice e meno tedioso che ho trovato è quello di scansionare la pagina a caccia dei RadioButtonList, costruirmi l'sql e lanciarle.

Questo non è difficile. Il problema è che mi è venuto l'idea di fare questo lavoro da un'altra pagina. Adesso però, non è il bisogno che mi spinge a risolvere ma è solo la curiosità. Forse "reflection" è la strada da percorrere.
Ciao e grazie ancora

Pietro
11.724 messaggi dal 09 febbraio 2002
Contributi
Con questo codice che usa la reflection puoi recuperare gli id delle radiobuttonlist senza dover istanziare la pagina.
var pageType = typeof(_Default); //Al posto di _Default metti il tipo della tua pagina aspx
var radioButtonListNames = pageType
                .GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
                .Where(t => t.FieldType == typeof(RadioButtonList))
                .Select(t => t.Name)
                .ToList();


Comunque mi sembra tutto moooolto fragile perché così fai affidamento sul fatto che per ogni controllo esista un campo privato che si chiama come il suo id. Questi campi esistono grazie a codice generato automaticamente da Visual Studio, quindi sei in mano a lui. Se stai usando Visual Studio 2010 non è neanche detto che il codice qui sopra funzioni, io ho provato su VS 2017.


Nella pagina ho un certo numero di RadioButtonList i cui id sono uguali ai nomi dei campi della tabella oracle

Se devi generare dinamicamente delle query, dovresti costruirti una qualche struttura dati e salvarla o nel database o su un file di testo. In questo modo, sia la pagina che presenta i dati e sia quella che genera il report faranno affidamento su un qualcosa creato da te e su cui hai il perfetto controllo.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.