[asp.net]DataListItems in code toevoegen

Pagina: 1
Acties:

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Topicstarter
Ik ( eigenlijk een collega ;) ) ben bezig met een WebForm aan het maken en nu moet er hier een tabel gemaakt worden aan de hand van een DataTable.
Dit is natuurlijk vrij eenvoudig te doen door middel van databinding.

Het probleem is nou dat er soms ( afhankelijk van de data ) een extra item tussen gevoegd moet worden.

Ik had dit zelf ook al wel eens gehad alleen dan met een Repeater. Ik dus even snel uitgelegd hoe ik dat gedaan had in de veronderstelling dat het in een DataList wel op dezelfde manier zou gaan. Bij een repeater had ik het op de volgende manier gedaan.

In het ItemDataBound event controleer ik de data en als er een extra item toegevoegd dient te worden doe ik het volgende.
C#:
1
2
3
RepeaterItem item = new RepeaterItem( myRepeater.Items.Count, ListItemType.Item );
myRepeater.ItemTemplate.InstantiateIn( item );
myRepeater.Controls.Add( item );


Dit werkt gewoon goed. ( Tuurlijk moet je met postbacks rekening houden dat je hem weer toe moet voegen en dergelijke ).

Als ik dit echter met een DataList doe op dezelfde manier
C#:
1
2
3
DataListItem item = new DataListItem( myDataList.Items.Count, ListItemType.Item );
myDataList.ItemTemplate.InstantiateIn( item );
myDataList.Controls.Add( item );

komt er helemaal geen item bij in de list. Als ik het uitvoer op een lege DataList bijvoorbeeld dan wordt er alleen maar dit in de html gerenderd
HTML:
1
2
<table id="myDataList" cellspacing="0" border="0" style="border-collapse:collapse;">
</table>

Er wordt dus geen tablerow toegevoegd.

Ik heb in de MSDN gezocht bij de datalist en het DataListItem maar ik kan nergens vinden dat je niet zelf Items mag toevoegen.
Dus mijn vraag is: Waarom komt er geen output van de het DataListItem wat ik heb toegevoegd?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • whoami
  • Registratie: December 2000
  • Nu online
Kan je die collega er niet toe bewegen om een repeater te gebruiken?
To precisely control the HTML used to render the list, use the Repeater Web server control.
bron: .NET SDK

https://fgheysels.github.io/


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Topicstarter
whoami schreef op 27 november 2003 @ 16:29:
Kan je die collega er niet toe bewegen om een repeater te gebruiken?

[...]

bron: .NET SDK
Tuurlijk kan dat wel. Dat is eigenlijk ook helemaal het probleem niet meer ;).

Ik wil eigenlijk gewoon weten waarom het zo niet werkt :P. Het lijkt me toch dat het zo zou moeten kunnen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • whoami
  • Registratie: December 2000
  • Nu online
Heb je hier iets aan?
When data binding, you specify a data source for the DataList control as a whole. When you add other controls to this control — for example, labels or text boxes in list items — you in turn bind them to the container, namely the DataList control.
Je zult die control waarschijnlijk dus nog moeten binden aan de DataList ofzo.

https://fgheysels.github.io/


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Topicstarter
whoami schreef op 27 november 2003 @ 16:35:
Heb je hier iets aan?

[...]


Je zult die control waarschijnlijk dus nog moeten binden aan de DataList ofzo.
Dit gaat volgens mij over controls die je in je DataListItem toevoegt.
Het probleem doet zich overigens ook niet alleen voor als ik databinding gebruik. Als ik gewoon in mijn pageload de code zet om een DataListItem toe te voegen dan krijg ik ook een lege Tabel. Als ik dit echter met een Repeater doe dan wordt het Item wel gerenderd. Ik Heb nog een keer alle Properties/Methods/Documentatie van DataList doorgekeken maar ik kan nergens vinden dat een DataList zich in dit opzicht anders zou moeten gedragen dan een Repeater. Het grote verschil tussen een Repeater en een DataList is dat een DataList automatisch een Tabel om je data heen creeert.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:08

gorgi_19

Kruimeltjes zijn weer op :9

Hij moet soms toegevoegd worden; soms niet. Kan je hem niet gewoon toevoegen en Visible op false zetten; en als hij zichtbaar moet zijn, Visible op true?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Topicstarter
gorgi_19 schreef op 27 november 2003 @ 22:54:
Hij moet soms toegevoegd worden; soms niet. Kan je hem niet gewoon toevoegen en Visible op false zetten; en als hij zichtbaar moet zijn, Visible op true?
Het probleem is ( Het is al wel opgelost door gebruik van een Repeater ) dat het niet van tevoren bekend is op welke plek de extra items moeten komen. Het zijn extra headers die afhankelijk van de data in het midden van de tabel moeten komen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1