Newsgroup: it.comp.www.asp
Titolo: [ASP:NET] Impaginazione dati dal db un po' diversa....

Salve,
estraendo dati dal db devo inserirli in una tabella simile a questa (testo
e' la stringa estratta da un campo del db):
(spero che si capisca, cmq sono due colonne ai lati e una centrale vuota)
 _______________________
 | testo  |                          |  testo |
 | testo  |                          |  testo |
 | testo  |                          |  testo |
 | testo  |                          |  testo |
 | testo  |                          |  testo |
 | testo  |                          |  testo |
 | testo  |                          |  testo |
 | testo  |                          |  testo |
 | testo  |                          |  testo |
 | testo  |                          |  testo |
 ------------------------------------------
Con le colonne automatiche dei controlli per la gestione dei dati non ci
sono riuscito, cosi' utilizzano un repeater sono riuscito a realizzare una
cosa simile.
Il problema che mi ritrovo due celle nella prima riga che sono inutilizzate
e "sporcano" la correttezza del codice, ma non ho trovato altri metodi.
Non si puo' creare un template (e secondo me si puo' fare, solo che non so
come!) dove fa estrarre i dati (dallo stesso campo del db) in due colonne
laterali lasciandone una vuota al centro dove ci si puo' inserire altro?
Grazie a chi sa dirmi qualcosa... ma i controlli legati ai dati per me sono
ancora un mistero!!!
Saluti
BES


Una soluzione possobile con il repeater potrebbe essere la seguente:
<%@ Page language="vB">
<script runat=server>
dim contatore=0 as integer
function scrivitacellavuota() as string
if contatore/2=int(contatore/2) then
    return "<td>&nbsp</td>"
    else
    return "</tr><tr>"
end sub
<table><tr>
<asp:repeater id="myrepeatlist" runat=server >
<itemtemplate>
<td>
<%# Container.DataItem("contenuto_cella") %>
</td>
<%# scrivitacellavuota() %>
</itemtemplate>
</asp:repeater>
</tr></table>
L'ho scritto al volo... guarda se fa al caso tuo...
Ciao
--
AZ


Moderatore di it.comp.www.asp - Microsoft .NET MVP
http://www.aspitalia.com/
 Enjoy the .NET community!
http://www.dev2dev.it/
 La rete ha connesso nuove particelle!
http://www.extensible.it/
 XML and beyond

 --
Il problema e' che cosi' al centro ho tante celle! Io ho bisogno di un'unica
cella col colspan, ieri mi sono dimenticato di postare il codice che ho
fatto io, eccolo, cosi' capirai meglio:
<asp:Repeater id="rp" runat="server"  >
 <headertemplate>
  <table>
   <tr>
    <td></td>
    <td rowspan="11">
    testo centrale
    </td>
    <td></td>
   </tr>
 </headertemplate>
 <itemtemplate>
   <tr>
    <td><%# Container.DataItem("nome") %></td>
 </itemtemplate>
 <alternatingitemtemplate>
    <td><%# Container.DataItem("nome") %</td>
   </tr>
 </alternatingitemtemplate>
 <footertemplate>
  </table>
 </footertemplate>
</asp:Repeater>
pero' facendo cosi' rimangono appunto delle celle in alto vuote...poi con
una funzione bisognerebbe gestire il colspan della cella centrale, ma quello
non e' un problema, basta contare i record estratti, prima pero' volevo
concentrarmi sul layout, e sto pensando di usare solo il repeater perche' e'
quello piu' docile da addomesticare! Diciamo come un cagnolino randagio che
impara 200 cose, al posto del cane di razza che costa molto e non fa niente!
O perlomeno fa quello che vuole lui! :)
Hai qualche dritta per migliorare questo codice?
Saluti
BES

 codice che ho fatto io, eccolo, cosi' capirai meglio:
Prova con
<td id="testocentrale" runat="server" />
e poi inserisci il repeater con le due td, senza sfruttare headertemplate,
ma mettendo il codice della tabella fuori.
nel codice subito dopo il databind dei dati, aggiungi:
testocentrale.RowSpan = rp.Item.Count


 ...CUT...
Ottimo modo per il rowspan, in una riga! Rimane sempre il problema di avere
2 celle non utilizzate...ma sinceramente...non sporcano poi il codice piu'
di tanto...posso lasciarlo benissimo cosi', e poi mi sa che e' l'unica
soluzione utilizzabile...
Un'ultima cosa pero', se metto i due Container.DataItem all'interno dello
stesso template scrive due volte lo stesso, se metto l'alternate mi fa
l'alternanza in orizzontale tipo:
1 - 2
3 - 4
5 - 6
io vorrei fare una cosa del tipo:
1 - 4
2 - 5
3 - 6
Si lo so, sto chiedendo troppo, ma sono piuttosto convinto che ci sia una
soluzione semplice, solo che sono io che non ci arrivo!!!
Ah, e' repeater.items.count e non item! :)
Grazie di tutto.
Saluti
BES

 Grazie di tutto.
prego.



Avevo gia' usato il datalist, il problema e' che crea automaticamente la
tabella, e se non gli faccio creare la tabella mi mette i "<br>", cosi'
modificarmi l'impaginazione diventa impossibile e dico ciao ciao alla cella
unica centrale!
Se si potesse far si che il datalist non scriva niente (ne tabella ne br),
il problema sparirebbe, ma a quanto pare non si puo', o mi sono perso
qualcosa?
Saluti
BES