Ultima modifica di jabjoint; 14-05-2023 a 10:32
jabjoint
Si optime, se ho capito si, MA come dicevo l'obbiettivo e' stato raggiunto con la reflection.
L'obbiettivo e' rappresentare I dati prelevati da qualsiasi vista/oggetto in Una DataGridView senza riscrivere I campi Di ognuna
Se vi sono metodi migliori bene.
Probabilmente si puo' manipolare in modo efficiente Il DbSet MA non son in grado.
Ultima modifica di jabjoint; 14-05-2023 a 10:38
jabjoint
A parte il discorso sulla soluzione, io personalmente eviterei scelte del genere, visto che in questo modo ti precludi ogni possibilità di customizzazione della vista/griglia. Ad esempio, su una lista ordini vedrei bene un bottone "clona", cosa che non metterei su una lista fornitori Insomma, ok generalizzare/semplificare, ma con giudizio
Retrospettivamente, ti lascio anche uno spunto di riflessione: se avessi posto questa domanda sin da subito, specificando lo scopo invece dei dettagli operativi, non credi che sarebbe stato meglio (IMHO: sì sì e sì )? Adesso, anche se ti venisse proposta una soluzione più efficace (e credo proprio che ve ne siano) probabilmente smontare quello che hai fatto ti costerebbe troppo e finirai col tenerti una soluzione non ottimale.
Sbagliando si impara. Probabilmente Ho trovato il modo di elencare le proprietà con un metodo efficiente.
Si trova tra le classi del DbContext la possibilità di farlo. Appena ho tempo posto.
La domanda l'ho posta diversamente perché mi ero interessato al caso specifico, che riguarda poco col riassunto generale.
jabjoint
codice:public void setObjectInView(DataGridView view, IEnumerable objs) { foreach (object o in objs) { IEnumerable<string> p = nde.Entry(o).CurrentValues.PropertyNames; string[] values = new string[p.Count()]; int k = 0; foreach (string x in p) { string s = nde.Entry(o).CurrentValues.GetValue<object>(x).ToString(); values[k] = s; k++; } view.Rows.Add(values); } }
jabjoint
Tralasciando il concetto di efficienza, che in questo caso potrebbe essere quantomeno discutibile, ma dal punto di vista di un utente a che servirebbe avere una griglia di dati ordinati in modo presumibilmente casuale, con un numero casuale di colonne in cui nella migliore delle ipotesi1 in alcune righe vedrebbe parte di esse vuote, senza alcun riferimento al significato che questi valori hanno visto che non corrispondono ad una colonna specifica e non hanno etichetta, per di più convertiti in stringa2 a prescindere dal tipo a cui appartengono? Che dovrebbe capire un utente da questa visualizzazione? E nel caso come potrebbe modificarli da questa griglia?
Il punto è che se non ci dici che cosa vorresti ottenere, ma solo come lo ottieni o quantomeno come pensi di ottenerlo senza nessuna logica apparente, come già detto da utenti che non sono certo novellini, l'idea che dai è che stai trollando.
Note:
1dal lato del programmatore devi avere previsto il numero massimo di proprietà che un oggetto può avere, quindi comunque devi sapere questo in fase di creazione del datagridview, e quindi inutile dal punto di vista della flessibilità dinamica
2alcuni di questi possono non essere valori convertibili in stringa, quindi se non hai fatto un override specifico del metodo ToString nel tipo relativo otterresti solo il nome del tipo in stringa.
Ultima modifica di U235; 16-05-2023 a 05:45