11 messaggi dal 03 maggio 2004
www.devisoft.it
Salve a tutti, vorrei porvi questo problema:
ho creato un DataGrid con colonne dinamiche (AutoGenerate a True), all'evento ItemDataBound ho inserito in alcune celle
un textbox per inserire dei valori.
é possibile recuperare questi valori e salvarne il contenuto in una sp?

'Inserisco i valori in un oggetto textBox
For ix As Integer = 4 To e.Item.Cells.Count - 2
t = New IdTextBox
t.AutoTab = True
t.Seleziona = True
t.Width = Unit.Pixel(40)
t.ID = "I" + CStr(e.Item.ItemIndex) + "G" + CStr(ix - 4)
If e.Item.Cells(ix).Text <> "" Then
t.Text = e.Item.Cells(ix).Text
End If
e.Item.Cells(ix).Controls.Add(t)
Next
...

Nella routine di salvataggio ho scritto:
For ix = 0 To Grid2.Items.Count() - 1
dgi = Grid2.Items(ix)
v_Matricola.Value = dgi.Cells(0).Text
v_Tipo.Value = dgi.Cells(3).Text
v_CodiceCentro.Value = usr.GetCentro(objDB)
For iy = 4 To dgi.Cells.Count - 2
Try
v_Giorno.Value = iy - 4
v_Orario.Value = CType(dgi.Cells(iy).Controls(0), IdTextBox).Text
cmd.ExecuteNonQuery()
errori += v_Ret.Value

Catch ex As OleDbException
MsgBox.Show("Impossibile effettuare il salvataggio.", Page)
Catch ex As Exception
MsgBox.Show(ex.ToString(), Page)
End Try
Next
Next

Mi da un errore quando cerco di pescare il textbox creato
v_Orario.Value = CType(dgi.Cells(iy).Controls(0), IdTextBox).Text
187 messaggi dal 28 gennaio 2002
Premesso che non riesco a capire i motivi della tua scelta di utilizzare il DataGrid in questo modo, dovresti dire qual è l'errore che ottieni

Consiglio: se usi Visual Studio, il debug è fondamentale.

Ciao

blog: http://community.visual-basic.it/tdj
11 messaggi dal 03 maggio 2004
www.devisoft.it
L'errore che mi viene fuori è questo.

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: index
at System.Web.UI.ControlCollection.get_Item(Int32 index)
at ArchimedePresenze.Consuntivi.Salva_Click(Object sender, EventArgs e) in \\Idserver01\wwwroot\ArchimedePresenze\Consuntivi.aspx.vb:line 208');

quando clicco sul Button Salva.
Sembra che i textbox non contengano più i controlli.

Utilizzo la griglia in questo modo perchè ho un numero di campi variabile e devo comunque editare all'interno.
11 messaggi dal 03 maggio 2004
www.devisoft.it
In pratica quello che mi serve è avere una griglia con
colonne variabili (possono essere 15, 20 o 31) perciò
utilizzo l'autogenerate, ma questa griglia non mi serve solo per visualizzare i dati , ma per inserimento e modifica.
Perciò ho pensato di inserire da VB all'evento ItemDataBound
i textbox nelle colonne che servono. Il problema è che quando cerco di salvare e mi prendo il textbox della cella, questo sembra non esistere più!!!
infatti dgi.Cells(iy).HasControl mi ritorna false....
significa per caso che perdo il controllo quando cerco di salvare???

Qualcuno sa come venirne fuori?
187 messaggi dal 28 gennaio 2002
Se non hai necessità di visualizzare sempre i TextBox, ma solo quando l'utente vuole modificare dati, puoi sfruttare l'Edit automatico del DataGrid.
Sostanzialmente il controllo provvede a creare dei text box in fase di edit (senza che l'inserisca tu) per poi recuperarne il valore nell'evento UpdateCommand.

Inoltre ti conviene creare staticamente (nel codice html) il numero max di colonne che ti servono e nascondere da codice quelle che non ti servono.

Nell'help (e in rete) trovi diversi esempi.

Ciao

blog: http://community.visual-basic.it/tdj
11 messaggi dal 03 maggio 2004
www.devisoft.it
Devo inserire sempre i dati, su una qualsiasi cella
perciò la soluzione dell'edit in questo caso non mi serve.

La soluzione che mi proponi l'ho già adottata, sostanzialmente le colonnne variano a seconda del mese, perciò mi sono scritto 31 TemplateColumn, e a seconda del mese nascondo quelle che non mi servono...

ma siccome non era elegante gestire le colonne nascoste, anche perchè implica la gestione del bisestile da codice, che invece era già implicita nella mia select * fa stored procedure.... cercavo un modo per poter editare del testo e
passare questi valori senza doverli creare staticamente.

Inoltre avevo fatto una gestione dei festivi... cioè visualizzavo a seconda del nome del campo un colore rosso per i festivi e uno nero per gli altri a seconda di una mia convenzione (1,2,3,4.... per i giorni feriali 1001,1002... per i festivi) che non posso più utilizzare perchè devo inserire nel textbox il valore caricato dal DB.

CMQ. non c'è un modo per creare dei TextBox dinamici e poi passarne il valore al salvataggio?
3.939 messaggi dal 28 gennaio 2003
Di solito tendo ad utilizzare il DataGrig solo per scopi molto semplici. Nel tuo caso io utilizzerei la classe Table.
E' abbastanza facile costruirsi la tabella. E' facile modificarla da client e nel server
11 messaggi dal 03 maggio 2004
www.devisoft.it
pietro09 ha scritto:
Di solito tendo ad utilizzare il DataGrig solo per scopi molto semplici. Nel tuo caso io utilizzerei la classe Table.
E' abbastanza facile costruirsi la tabella. E' facile modificarla da client e nel server


Avresti anche ragione, ci avevo già pensato, l'unico problema è che mi sembra di tornare al vecchio ASP, se devo crearmi a mano tutta la mia tabella, bindarmi a mano tutte le righe e le celle ... e gestirmi anche la paginazione a mano.

Non c'è un modo di utilizzare il DataGrid inserendo dei controlli in colonne AutoGenerate?

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.