Beste tweakers,
Misschien een stomme vraag, maar ik zoek een nette manier om een ASP.Net DropDownList aan een Linq entity array te binden, met een twist.
Ik heb een tabel Persoon, met daarin de kolommen PersoonId, Achternaam en Voornaam. Wat ik graag wil, is een lijst waarin het DataValueField gelijk is aan PersoonId, maar het DataTextField gelijk aan "Achternaam, Voornaam".
Normaal gesproken deed ik dit altijd via SQL.. dus dat ik een kolom toevoegde in de query, zoals:
SELECT *, Achternaam + ', ' + Voornaam AS VolledigeNaam FROM Persoon
En dan zette ik het DataTextField altijd naar VolledigeNaam. Maar met Linq kan ik dit niet zomaar doen en stiekem vind ik het ook niet netjes. De data is gewoon Achternaam en Voornaam, de user interface zou het dus anders moeten presenteren. We gaan dus een laag omhoog / naar buiten.
Eerst probeerde ik dit te omzeilen met SQL Views, wat op zich lukte, maar dan werden mijn LinqToSQL classes wel erg rommelig en moet ik voor zo'n beetje elke tabel een view gaan aanmaken. Ik kan er Stored Procedures voor aanmaken, maar die gebruik ik liever alleen voor taken die ook echt iets wijzigen, anders zou je weer een Stored Procedure moeten aanmaken voor elke tabel alleen maar om dingen op te vragen. Wat dus ook weer omslachtig is.
Oftewel, hoe zouden jullie dit netjes aanpakken met Linq? En helemaal in de spirit van Rapid Application Development? Dus geen omslachtige Views, Procedures, handgeschreven code, etc
Want anders kan ik net zo goed geen Linq gebruiken..
Alvast bedankt
Mijn test code, dusver:
Dit laat dus alleen de achternaam zien. Ik heb nog gezocht, maar een ASP.Net DropDownList heeft ook geen ItemDataBound..
Misschien een stomme vraag, maar ik zoek een nette manier om een ASP.Net DropDownList aan een Linq entity array te binden, met een twist.
Ik heb een tabel Persoon, met daarin de kolommen PersoonId, Achternaam en Voornaam. Wat ik graag wil, is een lijst waarin het DataValueField gelijk is aan PersoonId, maar het DataTextField gelijk aan "Achternaam, Voornaam".
Normaal gesproken deed ik dit altijd via SQL.. dus dat ik een kolom toevoegde in de query, zoals:
SELECT *, Achternaam + ', ' + Voornaam AS VolledigeNaam FROM Persoon
En dan zette ik het DataTextField altijd naar VolledigeNaam. Maar met Linq kan ik dit niet zomaar doen en stiekem vind ik het ook niet netjes. De data is gewoon Achternaam en Voornaam, de user interface zou het dus anders moeten presenteren. We gaan dus een laag omhoog / naar buiten.
Eerst probeerde ik dit te omzeilen met SQL Views, wat op zich lukte, maar dan werden mijn LinqToSQL classes wel erg rommelig en moet ik voor zo'n beetje elke tabel een view gaan aanmaken. Ik kan er Stored Procedures voor aanmaken, maar die gebruik ik liever alleen voor taken die ook echt iets wijzigen, anders zou je weer een Stored Procedure moeten aanmaken voor elke tabel alleen maar om dingen op te vragen. Wat dus ook weer omslachtig is.
Oftewel, hoe zouden jullie dit netjes aanpakken met Linq? En helemaal in de spirit van Rapid Application Development? Dus geen omslachtige Views, Procedures, handgeschreven code, etc
Alvast bedankt
Mijn test code, dusver:
code:
1
2
3
4
5
6
7
8
| Public Class DbData Public Shared Function GetAllPersoon() As DbTest.Data.Persoon() Using db As New DbTest.DbTestDataContext() Dim result = From pp As DbTest.Data.Persoon In db.Persoon Order By pp.AchterNaam, pp.VoorNaam Return result.ToArray() End Using End Function End Class |
code:
1
2
3
4
| ddlPersoon.DataSource = DbData.GetAllPersoon() ddlPersoon.DataValueField = "PersoonId" ddlPersoon.DataTextField = "Achternaam" ddlPersoon.DataBind() |
Dit laat dus alleen de achternaam zien. Ik heb nog gezocht, maar een ASP.Net DropDownList heeft ook geen ItemDataBound..
[ Voor 16% gewijzigd door Lethalis op 05-11-2008 15:04 ]
Ask yourself if you are happy and then you cease to be.