ArneMedlem sedan maj 2000267 inlägg
Jag vet ej om denna fråga ska ligga här eller sql forumet, men jag ställer den i alla fall....
Jag har en tabell (ms sql) varav samtliga förutom en (DbType int) är av DbType Bit
Jag vill göra en sql sats typ:
SELECT id, bol1, bol2, bol3, bol4, bol5, FROM mintabell WHERE id = @id
bol1 och mer är ca 40 st....
Jag vill fylla en asp:DropDownList med de fält som har värdet true med kolumnens namn.
Till exempel om bol1 och bol2 är falskt och resterande sant, listas bol3, bol4, bol5 och de andra i min asp:DropDownList och det som visas i min DropDownList är namnen på kolumnerna.
Går det att göra på något sätt? Gör jag det i sql satsen i så fall, eller kan jag sätta parametrar i min DropDownList som gör att det visas som jag (försökt) beskriva?
emissionMedlem sedan dec. 19996 095 inlägg
För det första så känns det lite tokigt med en tabell med så många kolumner. Det löses antagligen effektivare med en relationsstruktur. I synnerhet eftersom det du vill lista är kolumnnamnen.
Gör så här (kolumnnamnen är bara exempel och bör bytas ut):
objekttabell:
objektid (int) .....
värdetabell:
värdeid (int), värdenamn
kopplingstabell:
objektid,värdeid
Då kan du ställa vettiga SQL-frågor
--Plocka ut alla värden som är kopplade till objektet med id=@id
SELECT v.värdeid,v.värdenamn FROM värdetabell
INNER JOIN kopplingstabell k ON k.värdeid=v.värdeid
WHERE k.objectid=@id
--Plocka ut alla värden som inte är kopplade till objektet med id=@id
SELECT v.värdeid,v.värdenamn FROM värdetabell
LEFT OUTER JOIN kopplingstabell k ON k.värdeid=v.värdeid AND k.objectid=@id
WHERE k.värdeid IS NULL
...och det är helt rätt att du ska använda SQL till detta. DropDownList visar det det som matas in i den och har ingen logik för datafiltrering.
ZaimanMedlem sedan dec. 20012 439 inlägg
Tråden flyttad från ASP.NET