9 messaggi dal 28 agosto 2015
Ciao a tutti, mi sono da poco iscritto al Forum perché è solo da qualche mese che sto approcciando il mondo dello sviluppo siti web
Con HTML5 e CSS3 direi che finora mi è andata bene, mentre con ASP.NET sto incontrando maggiori difficoltà.

Rompo subito gli indugi e vi riporto il problema che ho attualmente, ovviamente semplificato nella sostanza, ma non nella logica: ho un database MS Access contenente diversi articoli, e relative informazioni. Tra queste informazioni sono presenti anche le "coordinate" (colonna, riga) in cui ogni articolo dovrebbe essere posizionato in una tabella di presentazione dei dati.

L'accesso ai dati avviene senza problemi: recupero, ordinamento e raggruppamento sono perfetti.
Il problema sorge quando devo presentare i dati in tabella a video; io ho bisogno di una disposizione come questa:

--------------COLONNA---RIGA----------------COLONNA---RIGA----------------COLONNA---RIGA
ART.PM123HT-----1--------1----ART.GX543ER-----2--------1----ART.PO876SD-----3--------1
ART.DS876CX-----1--------2----ART.KJ345XX------2--------2----ART.ER211SS-----3--------2
ART.SD222TR-----1--------3----ART.FG234PP-----2--------3
----------------------------------------ART.DF876XX-----2--------4
----------------------------------------ART.CD234ZZ-----2--------5

Avevo scartato in partenza l'uso di Repeater e di DataGrid: il primo perché troppo "limitato", il secondo perché troppo complesso (per le mie attuali conoscenze).
Avevo quindi optato per DataList, illudendomi di riuscire a risolvere il tutto mediante il RepeatColumns e il RepeatDirection, associati ad un corretto GroupBy nella Select di recupero dati.
Come spesso accade, l'illusione è rimasta tale, e al momento mi ritrovo con una presentazione correttamente divisa nel numero di colonne, ma con una distribuzione dei dati funzionale solo ad una uniformità di spaziatura della tabella.
In definitiva: c'è un modo di forzare il cambio colonna (in fase di presentazione) al cambiare del numero di colonna scritta nell'articolo del DB?

Ringrazio già da ora tutti quelli che mi risponderanno
Saluti

Stefano
Ci sono vari modi di realizzare quello che chiedi.
Il primo che mi viene in mente è fare una query sui dati ordinandoli per riga e colonna, poi ciclarli e stampare a video, anche solo in un literal i tr e i td:
List<Prodotto> prodotti = Controller.CaricaLista();// ordinati per colonna e riga
string html = string.Empty;
foreach(Prodotto prodotto in prodotti)
{
if (prodotto.Colonna == 0)
html += "<tr>";
html += "<td>" + prodotto.Nome + "</td>";
// TODO: logica chiusura tr
}

MyLiteral.Text = html;


Altrimenti puoi fare la stessa cosa con un repeater.

Per farlo con una gridview dovresti prima ciclare i record e raggrupparli in una nuova struttura da mettere in databinding alla griglia.

In tutto ciò attenzione se ci possono essere dei buchi (di colonnao addirittura di riga) perché è un caso che va trattato a parte.

Ormai programmano tutti... ma la professionalità appartiene a pochi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.