[erge cells e rows ] datagrid

giovedì 19 aprile 2007 - 15.47

Amodio Profilo | Expert

salve a tutti
dovrei unire celle o colonne, in asp mi bastava impostare il "colspan" oppure "rowspan" e aggiungere mano mano le righe o colonne nella colonna,riga successiva
in asp.net è possibile fare una cosa del genere? se si come?

grazie

alx_81 Profilo | Guru

>salve a tutti
Ciao

>dovrei unire celle o colonne, in asp mi bastava impostare il
>"colspan" oppure "rowspan" e aggiungere mano mano le righe o
>colonne nella colonna,riga successiva
e qui si parlava di una tabella HTML

>in asp.net è possibile fare una cosa del genere? se si come?
dipende che controllo utilizzi..
se usi datagrid, no..
se usi repeater con all'interno tabelle HTML, ovviamente sì (essendo tabelle HTML si comportano come tali)
>
>grazie
di nulla!

Alx81 =)

http://blogs.dotnethell.it/suxstellino

Amodio Profilo | Expert

ihnvece è possibile_
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
purtroppo quando ciclo gli elementi della combo,se ho una colonna con una combo non riesce a prendermi il valore dentro :(
infatti il findcontrol("controllo") non genera errore ma se faccio text da sempre vuoto
cosa posso fare?

alx_81 Profilo | Guru

>ihnvece è possibile
col codice che hai postato rimuovi ogni cella tranne la prima, e poi fai il colspan di tutto..
quindi intervieni modificando il render che il datagrid ti dà in automatico..
per di più, se volessi renderlo dinamico e variabile, come posizione, il codice non sarebbe corretto e dovresti complicarti un po' la vita..

>purtroppo quando ciclo gli elementi della combo,se ho una colonna
>con una combo non riesce a prendermi il valore dentro :(
>infatti il findcontrol("controllo") non genera errore ma se faccio
>text da sempre vuoto
ma la findcontrol quando la fai? e soprattutto.. dove lo metti il codice che mi hai scritto? nell'itemdatabound?



Alx81 =)

http://blogs.dotnethell.it/suxstellino

Amodio Profilo | Expert

allora...
il codice che ho postato unisce 2 celle orizzontalmente
cmq puoi modificarlo anche per unirle verticalmente,infatti io lo ho usato per unire verticalmente

l'unione lo faccio nella page_load,subito dopo che ho caricato il datagrid, nell'itemDatabound non faccio altro che caricare le combobox della colonna template (vuoi dire che sbaglio qui?)


e cmq come ti dicevo...non unisco MAI la prima cella in quanto contiene il codice, ma dalla seconda in poi,infatti quando devo salvare i cambiamenti dell'utente vado a prendermi il codice dalla prima colonna e vedo la combo come è stata modificata, pero' riesce a prendermi solo la prima occorenza della combo nella colonna template se una cella prima è stata unita :(

se vuoi posto il codice della funione che unisce le celle, ma bisogna spetare mercoledi' che rientro in ufficio

alx_81 Profilo | Guru

>l'unione lo faccio nella page_load,subito dopo che ho caricato
>il datagrid, nell'itemDatabound non faccio altro che caricare
>le combobox della colonna template (vuoi dire che sbaglio qui?)
>
>e cmq come ti dicevo...non unisco MAI la prima cella in quanto
>contiene il codice, ma dalla seconda in poi,infatti quando devo
>salvare i cambiamenti dell'utente vado a prendermi il codice
>dalla prima colonna e vedo la combo come è stata modificata,
>pero' riesce a prendermi solo la prima occorenza della combo
>nella colonna template se una cella prima è stata unita :(
>
>se vuoi posto il codice della funione che unisce le celle, ma
>bisogna spetare mercoledi' che rientro in ufficio
dire che aspettiamo.. perchè non mi è molto chiaro quello che fai..
ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

Amodio Profilo | Expert

ciao
ti posto il codice dwella funzione che riesce a unire le celle , la funzione vuole il numero colonna come parametro e unisce le celle in base lla colonna,se trova le stesse occorrenze

Public Sub UnisciColonneDatagrid(ByVal DG As DataGrid, ByVal Col As Int16) Dim i As Integer Dim Sapp As String = "" Dim Ssucc As String = "" Dim conta As Int16 = 1 'conta le occorrenze Dim cc As TableCell For i = 0 To DG.Items.Count - 1 Sapp = DG.Items(i).Cells(Col).Text If i = DG.Items.Count - 1 Then '-----ultima riga If Ssucc = Sapp Then DG.Items(i).Cells.RemoveAt(Col) cc.RowSpan = conta ' - 1 '+ 1 cc.Text = Sapp DG.Items(i - conta + 1).Cells.AddAt(Col, cc) '- conta End If GoTo continua'sostituire con variabile bool Else Ssucc = DG.Items(i + 1).Cells(Col).Text End If If Sapp = Ssucc Then 'Or (Ssucc = Sapp) Then 'And Sprec <> "" conta = conta + 1 cc = DG.Items(i).Cells(Col) DG.Items(i).Cells.RemoveAt(Col) ElseIf Sapp <> Ssucc And conta > 1 Then DG.Items(i).Cells.RemoveAt(Col) cc.RowSpan = conta ' - 1 '+ 1 cc.Text = Sapp DG.Items(i - conta + 1).Cells.AddAt(Col, cc) '- conta conta = 1 'resetto il conta End If continua:'da eliminare Next End Sub

il guaio di questa funzione è che nonostanze sembri funzionare, se si ha nel datagrid una colonna template con una combobox e si tenta di ciclare la grigglia, riusciresti solo a prendere la prima occorrenza della combo,se in una cella prima è stata unita :(

grazie
p.s.
la funzione ovviamente è da migliorare,quindi non guardare le ottimizzazioni, ma solo dove genera questa fastidioso errore,e mi riferisco ache ad "on error..."
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5