come effettui il DataBind? perche il GridView o qualsiasi altro controlli si anccontenta di un IEneumerable e nulla più

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
5 messaggi dal 27 luglio 2009
Secondo me il problema è che tu effettui il databind con la proprietà hrs che presupponi essere una Table<hrs>

Prova invece a lasciare il binding vuoto lato dichiarazione e gestire lato code behind l'evento LinqDataSource_Selecting: intercettando questo evento potrai modificare il datasource filtrandolo a tuo piacimento, senza dover ottenere necessariamente un oggetto table.

L'oggetto iQuerable che oterrai lo assegnerai a e.Result (dove e è l'oggetto LinqDataSourceSelectEventArgs che passi come argomento al gestore dell'evento) e il gioco è fatto.
9 messaggi dal 08 luglio 2004
Il problema è che dovrei modificare una 50ina di pagine aspx (l'esempio è semplificato). Vorrei capire almeno se la strada che sto percorrendo ovvero provare a ritoranre un subset di this.GetTable<hrs> è corretto

if (IsAdmin) return this.GetTable<hrs>();// funziona

Table<hrs> table = this.GetTable<hrs>();

var selHrs = (from p in table where p.UserId==(Guid)MU.ProviderUserKey select p).Single();

var selRows = from p in table where p.idhr==selHrs.idhr select p ;

if (IsResponsabile)
return (Table<hrs>)table.Where(LE => LE.idcompany == selHrs.idcompany); // estrae un range di righe a partire dal codice azienda
else
return (Table<hrs>)(from p in table where p.UserId==(Guid)MU.ProviderUserKey select p).Single(); // estrae il record specifico del proprio ruolo
// non funziona a causa del casting errato

Come posso ritornare il subset selezionato come tipo IQueryable ( o anche IEnumerable ) nel tipo Table<hrs> ?
non vorrei scoraggiarti, ma non puoi.

il tipo Table<T> non dispone nemmeno di un costruttore pubblico.

inoltre come ti ho già accennata è Table<T> che implementa IQuerable non viceversa

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
5 messaggi dal 27 luglio 2009
Non puoi invece cambiare la proprietà allora?
Definisci hrs come iQuerable. Fa il bind dei tuoi controlli a hrs come facevi prima. A questo punto all'interno del get() di hrs puoi restituire direttamente una Table oppure un oggetto iQuerable ottenuto dal filtraggio della query.
9 messaggi dal 08 luglio 2004
Purtroppo, concordo con voi, la strada che stavo percorrendo non ha portato alcun frutto. Ho abbandonato l'idea iniziale ed ho deciso di implementare nei vari datalinqsource il metodo onselecting. Perseverare è diabolico! Dopo 5 giorni di ricerche infruttuose sui vari blog non ho trovato soluzione. Grazie a tutti voi per il prezioso supporto.
Antonio

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.