Come mostrare il datatalist in datatalist itemTemplate
-
28-10-2019 - |
Domanda
Ecco il problema che ho nel mio progetto ASP.NET Web-Form.
Ho un datatalist che mostra tutti i prodotti dal database, ogni prodotto ha uno o più colori. Al momento scrivo query come questa per mostrare tutta la foto del prodotto e predefinita, ma non i colori relativi a quel prodotto:
var query = from p in db.Products
from c in db.Pics
where c.ProductId == p.ProductId
where c.IsDefault == true
select new { p.ProductId, p.ProductType, p.Name, p.Number, p.Package, p.Model, p.Size, p.Material, p.MantoLengh, c.PicAddress};
DataList1.DataSource = query;
DataList1.DataBind();
Non so come legare i colori correlati a un controllo degli elenchi (come Datalist o altri controlli di elenco) all'interno del mio controllo del datatalista, ecco una vista del mio diagramma di database per ulteriori informazioni:
Soluzione
Penso che questa domanda funzionerebbe anche se mi scuso in anticipo se la mia sintassi è leggermente fuori, sono più VB di C#...
var query = from p in db.Products
select new { p.ProductId,
p.ProductType,
p.Name,
p.Number,
p.Package,
p.Model,
p.Size,
p.Material,
p.MantoLengh,
p.Pics.Where(x => x.IsDefault).Select(x => x.PicAddress).ToList(),
p.Colors.Select(x => x.ColorHex).ToList() };
Fondamentalmente, nel tipo di anonimo selezionato è possibile utilizzare lambda per recuperare le collezioni da uno a molti usando select (). Tolist () e utilizzare .where () per eseguire il filtro.
Spero possa aiutare.
EDIT - In risposta al tuo commento:
Ho scelto le stringhe di colore esadecimale perché sembravano la migliore scommessa per creare i colori reali. Per cessare un colore da esadecimale, vedi Questo articolo. Dove nell'elenco vuoi aggiungere i colori?
Altri suggerimenti
Credo che dopo aver vinto i risultati al tuo datatalista, dovresti essere in grado di fare qualcosa del genere nel tuo datatalista $ <%#query.dataitem ("colori")%>