Gå til innhold

Anbefalte innlegg

Hei!

Jeg forsøker å skrive ut en liste av data fra msSql der jeg benytter group by i sql-kommandoen. Jeg har forstått det sånn at datagrid ikke takler dette noe særlig bra. Jeg skulle gjerne hatt noen hint på hvordan jeg kan løse dette problemet.

 

Slik vil jeg ha ut dataen på skjermen:

 

Saksbehandler Måned Antall

Ole Olsen Jan 3

Feb 23

Åge Ask Jan 3

Feb 6

 

Jeg får det ikke til å vises slik jeg vil, men dere skjønner vel hva jeg mener...

 

Jeg bruker VisualStudio, asp.net, c#...

Endret av kristianbu
Lenke til kommentar
Videoannonse
Annonse
  • 3 uker senere...

PivotTabell objektet fra Excel gjør det du er ute etter!

 

FrontPage har en wizard for dette som generer omtrent følgende kode:

 

<object classid="clsid:0002E552-0000-0000-C000-000000000046" id="PivotTable1">

<param name="XMLData" value="<xml xmlns:x="urn:schemas-microsoft-com:office:excel">

<x:PivotTable>

<x:OWCVersion>10.0.0.2621 </x:OWCVersion>

<x:DisplayScreenTips/>

<x:CubeProvider>msolap.2</x:CubeProvider>

<x:CacheDetails/>

<x:PivotView>

<x:IsNotFiltered/>

</x:PivotView>

</x:PivotTable>

</xml>">

 

timtowtdi

Lenke til kommentar

Her er et eksempel på hvordan gjøre dette med en datagrid. Det er muligens litt juks, men det funker. Datagrid er veldig kjekt å bruke, når du har skjønt litt av mulighetene med den.

Eksemepelet mitt brukes av meg til å vise en liste over hovedgrupper og undergrupper til disse, der hovedgruppen kun blir vist en gang, og så har alle sine undergrupper under seg.

Eksempelet er i VB.NET, men bortsett fra litt syntaxforskjell, så mener jeg at det skal funke i C# også.

 

I mitt eksempel, så gjør jeg først en vanlig Databind av datagrid'en

 'Binder alle grupper og subgrupper, relatert til hverandre
   Private Sub BindGroupsAndSubGroups()
       dgrGroups.DataSource = p.objContacts.GetContactGroupsAndSubGroups
       dgrGroups.DataBind()
   End Sub
[CODE]
SQL-statementet som jeg bruker, lager en "vanlig" liste, tilsvarende
Navn måned antall
Navn måned antall
Navn måned antall

Men så gjør jeg en liten fix i ItemCreated for datagridden:

[CODE]  
'fikser på datagrid, så ikke hovedgruppen blir gjentatt for hver undergruppe.
   Private Sub dgrGroups_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgrGroups.ItemCreated

'denne første sjekken gjør at du ikke prøver å gjøre dette på f.eks. header og footer-linjene
       If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
'og så en klassisk test på om det feltet du vil fjerne (navnet) er likt som det var i forrige runde. Hvis det er likt, så settes det til nbsp. Hvis det er ulikt, gjør du (implisitt) ikke noe....
           If sPrevGroupName = e.Item.DataItem("ContactGroupName") Then
               e.Item.DataItem("ContactGroupName") = " "
           End If
'og så sender du med det navnet du har brukt, så du kan sjekke mot dette i neste runde igjen
           sPrevGroupName = e.Item.DataItem("ContactGroupName")
       End If
   End Sub

 

Håper du får noe ut av eksempelet. :)

 

Kirikiri

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...