Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Templatecolumn
martedì 06 settembre 2005 - 17.51
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
PEPE
Profilo
| Senior Member
296
messaggi | Data Invio:
mar 6 set 2005 - 17:51
Cercando di capire come funzionano gli eventi del datagrid mi sono imbattuto in un problema.
Ho creato il mio famoso datagrid e l'ho associato ad una tabella.
Ho impostato gli eventi per edit dei dati e tutto sembra funzionare correttamente.
Il problema nasce se io volessi sostituire una textbox che compare nell'edit, con una dropdownlist.
Vi mostro il codice.
PAGINA ASPX:
<asp:DataGrid id="dgStab" Runat="server" OnItemDataBound="ItemDataBound" AutoGenerateColumns="False"
OnEditCommand="EditCommand" OnCancelCommand="CancelCommand">
<Columns>
<asp:BoundColumn DataField="codice_univoco" ReadOnly="True" HeaderText="Codice Univoco"></asp:BoundColumn>
<asp:BoundColumn DataField="indirizzo" HeaderText="Indirizzo"></asp:BoundColumn>
<asp:BoundColumn DataField="localita" HeaderText="Localita"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Direttiva">
<ItemTemplate>
<asp:Label Runat=server text='<%#Databinder.Eval(Container.Dataitem, "id_direttiva")%>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList Runat="server"></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Conferma" CancelText="Annulla" EditText="Modifica"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>
PAGINA VB
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Carica_Elementi(Nothing)
End Sub
Private Sub Carica_Elementi(ByVal data As Date)
'SE LA DATA VIENE PASSATA COME NOTHING IL VALORE DI data E' 0.00.00
Dim ObjElementi As New ComponentArir.Elenchi
Dim objCommand As New SqlClient.SqlCommand
Try
dgStab.DataSource = ObjElementi.EseguiQuery(ComponentArir.Elenchi.tipoRisultatoSelect.Tabella, ComponentArir.Elenchi.selectProcedure.SelectAnagraficaByCodiceUnivoco, objCommand)
dgStab.DataBind()
Catch ex As Exception
lblmessage.Text = "Errore nel caricamento dei dati"
Finally
objCommand.Dispose()
objCommand = Nothing
End Try
ObjElementi = Nothing
End Sub
Protected Sub EditCommand(ByVal sender As System.Object, ByVal e As DataGridCommandEventArgs)
dgStab.EditItemIndex = e.Item.ItemIndex
dgStab.DataBind()
End Sub
Protected Sub CancelCommand(ByVal sender As System.Object, ByVal e As DataGridCommandEventArgs)
dgStab.EditItemIndex = -1
dgStab.DataBind()
End Sub
Protected Sub UpdateCommand(ByVal sender As System.Object, ByVal e As DataGridCommandEventArgs)
dgStab.EditItemIndex = -1
'Aggiorno il database
'...
'...
'...
dgStab.DataBind()
End Sub
Come si fa a gestire l'associazione dei dati alla dropdownlist quando si fa l'edit della riga?
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 7 set 2005 - 11:20
Ciao Pepe,
tanto per cominciare al tuo DropDownList devi assegnare un ID.
Successivamente durante l'operazione di Edit devi recuperare il dropdwonlist tramite il metodo FindControl eseguire un cast esplicito e solo a quel punto puoi assegnare al dropdown un DataSet ed eseguire DataBind.
Nel caso sia già selezionata una voce, puoi eseguire uno step aggiuntivo e ricercare l'elemento del DB e selezionarlo automaticamente nella Combo Box con i metodi FindByText o FindByValue come riportato in questo Tip:
http://www.dotnethell.it/tips/SelectDropDownList.aspx
ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
PEPE
Profilo
| Senior Member
296
messaggi | Data Invio:
mer 7 set 2005 - 14:41
Grazie 1000 per la spiegazione.
L'unica cosa che non ho capito, e comunque mi ristudio meglio la teoria, e' in quale metodo fare questa operazione.
Il datagrid in fase di portback fa un sacco di roba che mi confonde un po le idee.
Dato che te mi hai detto in fase di edit credo di aver capito che queste operazioni vanno messe nel metodo relativo all'OneditCommand.
PEPE
Profilo
| Senior Member
296
messaggi | Data Invio:
gio 8 set 2005 - 11:08
Aho!! io non ce riesco porca paletta :D:D.
Nel metodo Edit command ho fatto questo
Protected Sub EditCommand(ByVal sender As System.Object, ByVal e As DataGridCommandEventArgs)
dgStab.EditItemIndex = e.Item.ItemIndex
dgStab.DataBind()
Dim ctrl As Control = dgStab.FindControl("dropArticolo")
lblmessage.Text = ctrl.GetType.ToString()
End Sub
Quando eseguo mi da errore sul ctrl.GetType.ToString()
Riferimento a un oggetto non impostato su un'istanza di oggetto.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.
Dettagli eccezione: System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto
PEPE
Profilo
| Senior Member
296
messaggi | Data Invio:
gio 8 set 2005 - 14:23
Ho fatto come hai detto ma drop e' nothing.
Sicuramente sbaglio qualche cosa ma non capisco cosa :D.
Cmq se ci riesco vi metto in allegato i file aspx e vb che funzionano da soli.
Torna su
Stanze Forum
Elenco Threads
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 !