Där Name är en property i mina instansierade objekt i min collection. Problemet blir om jag har en property som kör med lazyload, låt oss säga att jag har en property som heter OrderAdress och den i sin tur refererar till ett objekt av Adress-typ som laddas när man anropar propertyns get-metod. Vill jag ha ut propertyn Street som finns i OrderAdress kan jag inte heller nå den via skriva DataField="OrderAdress.Street". Så min fråga är hur jag ska lösa detta på bästa sätt?
Antingen sköta det i codebehind och hur gör jag då på bästa sätt, eller skriva om min klass så att ett objekt som collectionen innehåller även håller adress direkt under klassen och inte någon referens till en annan klass. Åsikter?
Har testat nu och det smidigare jag kommit på är att skapa ett datatable, lägga till lite kolumner som jag vill visa, loopa igenom min collection och fylla datatable med information från den, sen binda datatablen till gridview istället för min collection, men det känns lite omständigt, men kanske så man får göra.
Om du använder ett BoundField så kan du inte komma åt subproperties (kasst), så du får använda ett TemplateField i stället, där du kan plocka ut egenskapen. Hårt typad, eller via Eval.
Att man inte kan nå dem. Det finns ingen försvarbar anledning (har kollat koden bakom) till att det inte skulle gå. Det borde dock inte vara så svårt att skriva en egen BoundField (ärva från originalet) som har en smartare implementering av GetValue-metoden.
Ok, rent prestandamässigt, det är ju enklare rent underhållsmässigt å köra på eval, men prestandamässigt , är det slöare å nå dem via eval och late binding än att att loppa igenom collectionen och slänga in det i ett datatable
Den generella rekommendationen är att man undviker Eval, eftersom den använder Reflection i bakgrunden (det gör DataField också, men inte alls lika intensivt), men i de prestandatester jag gjort har prestandaförlusten oftast varit försumbar, förvånande nog. Att loopa igenom collectionen och slänga in den i ett datatable borde innebära en rätt rejäl prestandaförlust, och dessutom blir det en väl knepig manöver.
271 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849