PDA

View Full Version : [Asp.Net/C#]Problemi con gridview/LinQ


RaouL_BennetH
29-02-2012, 23:26
Ciao a tutti :)

ho questo tipo di problema:


//Implementazione 1
var result = myCollection.Find(myQueryObject);
gridView.DataSource = result.OrderByDescending(x => x.AnyField);
gridView.DataBind();

protected void gridView_RowDataBound(object sender, GridViewEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
var myObj = e.Row.DataItem as MioOggetto;
if(myObj != null)
{
//all'interno del db le date possono variare in base a determinati criteri
//sono quindi costretto a prendere solo anno, mese e giorno
DateTime objTime = new DateTime(myObj.Year, myObj.Month, myObj.Day);

DateTime curTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);

if(objTime <= curTime)
e.Row.CssClass = " customCssClass";
}
}


Questo primo approccio, mi funziona perfettamente, nel senso che se ho oggetti con una data minore o uguale a quella odierna, la row utilizza come colore di background quello definito nel css (rosso in questo caso).



//Implementazione 2 --- NON FUNZIONA ---
//Dal mio result devo anche fare dei "count" sulla collezione e quindi
var result = from o in myCollection.Find(myQueryObj)
select new
{
id = o.id,
ObjTime = o.DateFlash,
Concepts = o.Concept.Count,
bla
};
gridView.DataSource = result.OrderByDescending(x => x.AnyField);
gridView.DataBind();


Con questa seconda implementazione, lasciando invariato l'evento RowDataBound del gridView, non ottengo più il risultato dell'implementazione 1.

Qualcuno potrebbe farmi capire come mai ?


Grazie mille a tutti.

RaouL.

Kralizek
02-03-2012, 14:21
Perché l'output della tua query Linq non è del tipo MioOggetto e quindi nell'event handler RowDataBound non entri mai nell'if perché l'operatore "as" ritorna sempre null

RaouL_BennetH
13-03-2012, 19:25
Perché l'output della tua query Linq non è del tipo MioOggetto e quindi nell'event handler RowDataBound non entri mai nell'if perché l'operatore "as" ritorna sempre null

Perdona il ritardo nella risposta ma fu illuminante :)

Grazie mille.

RaouL.