webForumDet fria alternativet

DropDownList

2 svar · 401 visningar · startad av Arne

ArneMedlem sedan maj 2000267 inlägg
#1

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
#2

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
#3

Tråden flyttad från ASP.NET

Genererad på 362 ms · cache AV · v20260730165559-full.f96bc7eb