Newsgroup: it.comp.www.asp
Titolo: Repeater multiplo

Utilizzando l'oggetto asp:repeater in 
asp.net
 utilizzarlo ciclicamente ?
Mi spiego meglio.
Tramite il DataSet passo i dati al repeater con il seguente codice :
RepeaterTimb.DataSource = DS.Tables("pippo").DefaultView
DataBind()
e ottengo una tabella contenete i miei dati generata dal repeater con
ID="RepeaterTimb".
Io vorrei fare un for per ottenere più tabelle in questo modo :
For A = 1 to 10
Dim DA As New OdbcDataAdapter("SELECT pippo.* FROM pippo WHERE pippo.ID = "
& A , Conn)
Dim DS As New DataSet()
DA.Fill(DS, "pippo")
RepeaterTimb.DataSource = DS.Tables("pippo").DefaultView
DataBind()
Next A
Ma mi presenta solo i dati con ID=10 e non la lista da 1 a 10.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Ma mi presenta solo i dati con ID=10 e non la lista da 1 a 10.
Non ha senso il codice qui sopra. Puoi spiegare con maggior dettaglio il
risultato che vuoi ottenere?
Se vuoi unire più query è sufficiente che usi "union" nell'sql:
http://www.aspitalia.com/liste/usag/script.asp?ID=83&lista
Ciao
-- 
AZ [Microsoft .NET MVP]
.NET Community: 
http://www.aspitalia.com/
Il mio blog: 
http://blogs.aspitalia.com/az/
Microsoft MVP: 
http://italy.mvps.org/
Sito personale: 
http://ciclismo.sitiasp.it/

Riconosco che non mi sono spiegato molto bene.
Vediamo se riesco ad essere più chiaro.
Di seguito riporto il codice che ho scritto.
Questo codice al click del pulsante TEST mi genera una pagina con una
tabella contenente i dati relativi all'ID passato.
<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="iso-8859-1"
%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>
<script runat="server">
Sub vai(Obj As Object, E As EventArgs)
' *** Crea la connessione.
Dim Conn as OdbcConnection
Conn = New OdbcConnection("DSN=pippo")
' *** Carica i dati.
Dim DA As New OdbcDataAdapter("SELECT pippo.* FROM pippo" & _
" WHERE pippo.ID = " & clng(Session("ID")) , Conn)
Dim DS As New DataSet()
DA.Fill(DS, "pippo")
' *** Passa i dati all'oggetto Repeater.
RepeaterTimb.DataSource = DS.Tables("pippo").DefaultView
DataBind()
Conn.Close()
End If
End Sub
</script>
<html>
<head>
<title>Test</title>
</head>
<body background="/backgrounds/background.gif">
<div align="center">
<p align="center">
<font size="4" face="Comic Sans MS"><b><i>Select month
prefered</i></b></font></p>
<form id="Lista" runat="server">
<p><asp:button ID="Test" Text="Test" OnClick="vai" runat="server">
</form>
<p>&nbsp;</p>
<asp:repeater id="RepeaterTimb" runat="server" >
<headertemplate>
<table width="400" border="0" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#CCCC99" width="250"><b>Name and Surname</b></td>
<td bgcolor="#CCCC99" width="100"><b>Date</b></td>
<td bgcolor="#CCCC99" width="50"><b>Time</b></td>
</tr>
</headertemplate>
<itemtemplate>
<tr>
<td bgcolor="#CCFFCC"><%# Container.DataItem("Name")%>&nbsp;<%#
Container.DataItem("Surname") %></td>
<td bgcolor="#CCFFCC"><%# Format(Container.DataItem("Data"), "dd/MM/yyyy")
%></td>
<td bgcolor="#CCFFCC"><%# Format(Container.DataItem("Ora"), "HH:mm") %></td>
</tr>
</itemtemplate>
<footertemplate>
</table>
</footertemplate>
</asp:repeater>
</div>
</body>
</html>
Vorrei modificare questo codice per ottenere tante tabelle in sequenza per
quanti sono gli ID (gli ID sono pachi circa 25).
Anzichè passare il valore ID alla stringa sql con un for gli passo tutti gli
ID ciclicamente e vorrei chiamare piuà volte làoggetto repeater per farmi
generare ogni volta una tabella relativa allàID passato in quel momento. Se
utilizzo il comando UNION di sql lui mi genera una tabella con tutti i
risulati e non tante tabelle.
In ASP lo facevo generando le tabelle con il response.write e tramite degli
IF sull'ID riusciva a sapere se restituire solo una riga della tabella
oppure anche l'intesatazione della tabella stessa.
Spero di essere stato più chiaro.
Grazie dellàaiuto.


 Grazie dellàaiuto.
Avevo avuto a che fare con questo "problema" qualche tempo fa. Avevo
risolto - se ci sono altre soluzioni, ben vengano - inserendo il repeater in
un usercontrol in cui inerivo la property public di un datatable che avrebbe
"popolato" il repeater.
Quindi, inserito all'interno della pagina un PlaceHolder, vi inserivo il
numero di repeater interessati impostando per ognuno di essi il datatable
con i dati interessati. (Questo trucco lo puoi vedere, anche se sono dei
datagrid, in questa pagina:
http://ciclismo.sitiasp.it/classifica.aspx?da=az
).
Se hai bisogno di maggiori info fai sapere...


 Ciao
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Come faccio se non so il numero preciso di ID e quindi repeater da usare ?
Passo primo: credi un usercontrol contenente soltanto un repeater con il
layout a te preferito. Quindi nella sezione del codice inserisci una
property pubblica. Qualcosa di questo tipo:
(myrepeater.ascx)
<@ Control Language="vb" classname="repeater1" %>
<script runat="server">
public writeonly property Source()
set (byval Value)
    RepeaterTimb.DataSource=value
    RepeaterTimb.DataBind()
end set
</script>
<asp:repeater id="RepeaterTimb" runat="server" >
<headertemplate>
<table width="400" border="0" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#CCCC99" width="250"><b>Name and Surname</b></td>
<td bgcolor="#CCCC99" width="100"><b>Date</b></td>
<td bgcolor="#CCCC99" width="50"><b>Time</b></td>
</tr>
</headertemplate>
<itemtemplate>
<tr>
<td bgcolor="#CCFFCC"><%# Container.DataItem("Name")%>&nbsp;<%#
Container.DataItem("Surname") %></td>
<td bgcolor="#CCFFCC"><%# Format(Container.DataItem("Data"), "dd/MM/yyyy")
%></td>
<td bgcolor="#CCFFCC"><%# Format(Container.DataItem("Ora"), "HH:mm") %></td>
</tr>
</itemtemplate>
<footertemplate>
</table>
</footertemplate>
</asp:repeater>
(Ho copiato alla bell'e meglio dal tuo codice).
Ora nella pagina principale, al posto del repeater inserisci un PlaceHolder:
<html>
<head>
<title>Test</title>
</head>
<body background="/backgrounds/background.gif">
<div align="center">
<p align="center">
<font size="4" face="Comic Sans MS"><b><i>Select month
prefered</i></b></font></p>
<form id="Lista" runat="server">
<p><asp:button ID="Test" Text="Test" OnClick="vai" runat="server">
</form>
<p>&nbsp;</p>
<asp:placeholder id="PlaceHolder1" runat="server" />
</div>
</body>
</html>
Quasi finita: dall'interno del tuo codice inserisci un tot di usercontrol
quanti sono gli id:
Sub vai(Obj As Object, E As EventArgs)
' *** Crea la connessione.
Dim Conn as OdbcConnection
Conn = New OdbcConnection("DSN=pippo")
' *** Carica i dati.
Dim DA As New OdbcDataAdapter
Dim DS As New DataSet()
for t as Int16=1 to cint(Session("ID"))
DA = New OdbcDataAdapter("SELECT pippo.* FROM pippo" & _
" WHERE pippo.ID = " & t , Conn)
DA.Fill(DS, "pippo"+cstr(t))
next
Conn.Close()
' *** Passa i dati all'oggetto Repeater.
Dim r As repeater1
for tt as Int16=1 to cint(Session("ID"))
r = DirectCast(LoadControl("myrepeater.ascx"), repeater1)
r.Source = DS.Tables("pippo"+cstr(tt)).DefaultView
PlaceHolder1.Controls.Add(r)
PlaceHolder1.Controls.Add(New LiteralControl("<p />"))
Next
End Sub
Ho scritto tutto al volo... se c'è qualche errore sorry! :)
Qui visualizza tutte le tabella dall'ID 1 al Session("ID").
