Modifica dinamica testo controllo literal

sabato 22 maggio 2004 - 16.33

mo70 Profilo | Junior Member

Ciao,
come faccio a modificare da codice (VB.NET) il text di un controllo literal contenuto nell'ItemTemplate di un repeater? Ho intercettato l'evento OnItemDataBound del repeater per modificare il testo ogni 20 record ma non mi legge il valore.

Grazie

Brainkiller Profilo | Guru

Intanto il literal deve avere anche lui runat="server".
Inoltre di solito io uso un For Each ciclando su tutti gli oggetti contenuti nell'ItemTemplate oppure usando un FindControl. Una volta che hai la reference al tuo oggetto poi ci fai quello che vuoi.

Altra soluzione è creare il Literal a runtime quindi dentro l'onitemdatabound, lo riempi con il testo che vuoi e poi lo aggiungi alla collection dei Controlli. .Controls.Add(literal)

ciao
david

mo70 Profilo | Junior Member

puoi scrivermi la sintassi in vb.net per aggiungere il controllo literal nell'evento onitemdatabound? Dovrei riempirlo con la classe P che ho così definito nella parte HTML
.P {page-break-after:always}
In pratica vorrei fare in modo che durante il binding del repeater ogni tot record venga inserita la classe P che mi crea un salto pagina in fase di stampa.

Grazie Mille...
Ciao

Brainkiller Profilo | Guru

Beh ma allora in questo caso non credo sia necessario fare tutta sta roba.
E' sufficiente che nell'ItemTemplate crei un controllo HTML, un TD di una tabel o altro che abbia come cssclass la classe che hai definito per sempio:

<ItemTemplate>
<tr style="background-color:FFECD8" class="P">
<td>
<%# DataBinder.Eval(Container.DataItem, "title") %>
</td>
</tr>
</ItemTemplate>

ciao
david

mo70 Profilo | Junior Member

ho provato ad inserire anche il controllo literal nel repeater e assegnargli la classe P il binding ogni tot record, però non mi legge il valore. Ti posto la sub

Sub Conta_record(sender As Object,e As RepeaterItemEventArgs)
Dim myItemCollection As RepeaterItemCollection = repeater1.Items
var_righe_stampa_temp=var_righe_stampa
conta_rec= 1
dim i as integer=1
Dim lc As New Literal()

For i = 1 to myItemCollection.Count
If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then
conta_rec = conta_rec+ 1
End If
if conta_rec = var_righe_stampa_temp then
salto_pagina="n. record " & conta_rec
DirectCast(e.Item.FindControl("idliteral"), Literal).text = salto_pagina
salto_pagina"<P class=" & "P" & "></P>"
else
salto_pagina=""
var_righe_stampa_temp=var_righe_stampa_temp+var_righe_stampa
End If
next
End Sub

grazie
ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5