webForumDet fria alternativet

Hjälp med en GridView och "Dynamik"

.NET

1 svar · 492 visningar · startad av Gildebrand

Medlem sedan juni 2009920 inlägg
Frågan#1

Hejsan!
Jag har en SQL-Fråga, som nu tyvärr inte är riktigt klar, men fungerar iallafall så att jag kan börja på programmeringsbiten.

Såhär ser den ut

declare @listcol nvarchar(max)
declare @query nvarchar(max)
select @listcol = STUFF(( Select distinct 
'],[' + LTRIM(str(Subject_ID))
from ämnen
FOR XML PATH('')
), 1, 2, '') + ']'

set @query =
'SELECT * 
FROM (  
SELECT Elev_ID, Subject_ID, Teacher_ID  
FROM ämnen) myTemp  
PIVOT (count(Teacher_ID) FOR Subject_ID 
IN (' +@listcol+')) AS pvt
order by Elev_ID'
execute (@query)

Och då får jag ett resultat som KAN se ut såhär.
Det är lite svårläst men hoppas ni förstår ändå

Elev_ID	10	13	14	15	16	2	3	4	6
0687B0C9-9454-4DE5-AF41-077EB10BCD81	0	0	1	0	0	0	0	0	0
B4BEB520-5F57-4B31-9DD4-0F580B84B752	0	0	0	0	0	0	0	0	0
8F34753E-FE45-40AD-B51A-4A5C493B494C	0	0	0	0	0	0	0	0	0

Nu vill jag peta in allt det här i en GridView på min WebForms-sida.
Kruxet:

  1. Att kolumnerna i GridView ska "genereras" dynamiskt efter vad som SQL-frågan returnerar
  2. Alla kolumner, förutom Elev_ID, ska vara DropDownLists
  3. DropDownList:arna ska alla innehålla samma sak, men ska ha olika selected value utifrån svaret på SQL-Frågan

Jag har inte fått till SQL-Frågan än tyvärr, men vill komma igång med programmeringen. Det som jag inte fått till är att istället för count(teacher_id) ska man få presenterat ett teacher_id eller null.
Har provat med max(cast(teacher_id as nvarchar(max))) men fick någon slags error då :/

Medlem sedan juni 2009920 inlägg
#2

Jag har kommit en bit nu iallafall :)
Har dock kört fast på en grej. Det går ju att sätta ett ID på en kolumn. Men jag vet inte hur jag ska kunna sätta IDt på kolumnen jag skapar i loopen. Såhär skapar jag kolumnerna nu:

            foreach (Ämnen sbj in Ämne)
            {
                TemplateField tmpfield = new TemplateField();
                tmpfield.HeaderText = sbj.Ämne;
                GridView1.Columns.Add(tmpfield);
            }
277 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)