2010-12-28 11 views
1

Ich habe Probleme, die Listview Recht einer ASP-Website. Meine Daten sind wie folgt:Listview itemTemplate in ASP.NET

So habe ich ein Wörterbuch, das eine Liste von Statistiken enthält:

Dictionary<string, IList<Stats>> 

Data example: Key    Value 
       Port1    List<Stats>: - int NumberOfSuspended 
              | - int NumberOfCompleted 
              |------ string messagetype 
       Port2    List<Stats>: -int numberOfSuspendes 
              | - int numberOfCompleted 
              |-----string messagetype 

Die Klasse „Statistik“ enthält ein paar Variablen (Message & numberofsuspended)

Also ich brauchen eine Ansichtlisten zu erstellen, die wie folgt aussieht:

<table> 
<tr><td>Port1</td></tr> 
    <tr><td>Messagetype</td><td>numberofSuspended</td> 

<tr><td>Port2</td></tr> 
    <tr><td>Messagetype</td><td>numberofSuspended</td> 
    ....... 
</table> 

Also im Grunde: foreach Liste in Wörterbuch eine Reihe machen mit den Statistiken propert ies (und der Schlüssel des Wörterbuchs ist titlerow)

So Endergebnis ist dies:

|---------------------------------------------- 
| PORT 1 
|---------------------------------------------- 
| MessageType1: | 0/0 | 0/0 
|---------------------------------------------- 
| MessageType2: | 0/0 | 0/0 
|---------------------------------------------- 
|----------------------------------------------- 
| PORT 2 
|---------------------------------------------- 
|---------------------------------------------- 
| MessageType1: | 0/0 | 0/0 
|---------------------------------------------- 
| MessageType2: | 0/0 | 0/0 
|---------------------------------------------- 

Kann mir jemand mit dem itemtemplate der Listenansicht helfen? Ich denke, es ist ein bisschen schwierig, weil ich ein Wörterbuch verwende? Ich mache Gebrauch von Databinding (Listview.Datasource = Wörterbuch < ..>)

Danke

+0

Sie müssen das Markup oder das Codebehind anzeigen, das tatsächlich für die Bindung verantwortlich ist. Ein weiterer Versuch wäre, das OnItemDataBound-Ereignis zu abonnieren, um mit e.Row.FindControl ("") Verweise auf die asp.net-Elemente der aktuellen Zeile zu erhalten und ihnen die Werte zuzuweisen – citronas

Antwort

0

diese Theorie nicht versucht, aber lassen Sie mich wissen, was Sie denken:

Könnten Sie versuchen Sie, ein Platzhalter-Steuerelement, das Durchlaufen jedes der Schlüssel und das Anwenden des Headers in der Schleife und das Hinzufügen eines Repeaters mit den Daten von diesem entsprechenden Schlüssel?

For each sKey as String in MyDictionary.Keys 
    plcMyHolder.Controls.Add(New LiteralControl("<h1>" & sKey & "</h1>")) 
    Dim rpt As New Repeater 
    rpt.DataSource = MyDictionary(sKey) 
    rpt.DataBind 
    plcMyHolder.Controls.Add(rpt) 
Next