21 messaggi dal 10 agosto 2006
Salve a tutti. E' il mio primo post e la mia prima richiesta in questo forum. Veniamo subito al problema.
Ho inserito il controllo dropdownlist nella mia datagrid. Tutto funziona perfettamente solo che ho la necessità di inserire due dropdownlist che funzionino con la modalità "Regione-Provincia". Mi spiego meglio: seleziono un valore dalla prima dropdownlist e nella seconda mi devono essere caricati tutti i valori che facciano capo al valore della prima dropdownlist. Nell'esempio da me citato, se selezionassi "Puglia" nella prima DDL, dovrei ottenere "Bari", "Brinidisi", "Foggia", "Lecce", "Taranto" nella seconda.
E' possibile fare una cosa del genere?
Grazie.
motogpdesmo16 wrote:
E' possibile fare una cosa del genere?

certo, imposti l'AutoPostBack sulla prima ed effettui il binding della seconda in base al valore selezionato.
su
http://www.aspitalia.com/script/566/Aggiungere-DropDownList-DataGrid.aspx c'è un esempio banale che però dovrebbe essere di aiuto, perchè applicando alla seconda la stessa tipologia di tecnica riesci a filtrarla senza scrivere poi tanto codice.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
21 messaggi dal 10 agosto 2006
ti ringrazio per l'interessamento e la risposta. A questo link
http://www.microsoft.com/italy/msdn/library/default.asp?url=/italy/msdn/library/net/aspnet/creatingcustomcolumns.asp?frame=true
ho trovato la possibilità di inserire il dropdown nella griglia. E fin qui tutto OK. Il codice l'ho ovviamente inserito nell' "ItemDataBound" della griglia.
La funzionalità di cui mi hai parlato (impostare l'autopostback, effettuare il binding della seconda combo previa ovviamente la query) devo inserirla dopo la valorizzazione della prima dropdown?
Un'ultima cosa...quando cambio il valore della prima dropdown non viene effettuato il refresh della pagina (o dovrebbe refreshare la griglia??).sapresti aiutarmi anche in questo??
Grazie tente.
Modificato da motogpdesmo16 il 11 agosto 2006 13.52 -
motogpdesmo16 wrote:
ti ringrazio per l'interessamento e la risposta. A questo link [url=http://www.microsoft.com/italy/msdn/library/default.asp?url=/italy/m sdn/library/net/aspnet/creatingcustomcolumns.asp?frame=true] ho trovato la possibilità di inserire il dropdown nella griglia. E fin qui tutto OK. Il codice l'ho ovviamente inserito nell' "ItemDataBound" della griglia.

l'esempio che ti ho fatto è enormemente più semplice, perchè usa tutto in maniera dichiarativa. ma funziona lo stesso.

La funzionalità di cui mi hai parlato (impostare l'autopostback, effettuare il binding della seconda combo previa ovviamente la query) devo inserirla dopo la valorizzazione della prima dropdown?

in realtà l'AutoPostBack va sulla prima, non sulla seconda. ha l'effetto di fare il PostBack ogni volta che cambi un valore, così da aggiornare la seconda.
la tecnica che ti ho mostrato funzionerebbe in entrambi i casi, sia sulla prima che sulla seconda DropDownList.

Un'ultima cosa...quando cambio il valore della prima dropdown non viene effettuato il refresh della pagina (o dovrebbe refreshare la griglia??).sapresti aiutarmi anche in questo??

è l'AutoPostBack sulla prima, come detto, a permetterlo.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
21 messaggi dal 10 agosto 2006
Il codice che ho inserito nell' "ItemDataBound" è il seguente
Dim valore1 As String
        Dim cn As New OleDb.OleDbConnection(setCnString)
      If e.Item.ItemType = ListItemType.EditItem Then

        Dim DRV1 As DataRowView = CType(e.Item.DataItem, DataRowView)
        Dim CurrentTipo As String = DRV1("nome")
        Dim DDL1 As DropDownList = CType(e.Item.Cells(3).Controls(1), DropDownList)
        Dim sqlRuolo As String = "SELECT id,nome FROM Tipo where cdruoli=" & Session("idruolo")
        Dim DA1 As New OleDb.OleDbDataAdapter(sqlRuolo, cn)
        Dim DS1 As New DataSet
        Dim item As ListItem
        DA1.Fill(DS1, "Tipo")
        DDL1.DataSource = DS1.Tables("Tipo").DefaultView
        DDL1.DataTextField = "Nome"
        DDL1.DataValueField = "Id"
        DDL1.DataBind()
        item = DDL1.ItemsFindByValue(CurrentTipo)
        If Not item Is Nothing Then item.Selected = True
        valore1 = DDL1.SelectedItem.Value.ToString
End If

Dovrei dunque inserire un DDL1.autopostback=true dopo il DDL1.databind() e poi replicare lo stesso codice nello stesso evento avendo cura di costruire la query per l'estrazione dei dati in base al valore di DDL1, vero?
Scusa se ti sto ponendo troppe domande ma mi son avvicinato da neanche due mesi al mondo asp.net...
motogpdesmo16 wrote:
Dovrei dunque inserire un DDL1.autopostback=true dopo il DDL1.databind() e poi replicare lo stesso codice nello stesso evento avendo cura di costruire la query per l'estrazione dei dati in base al valore di DDL1, vero?

all'incirca, se non fosse che fai sicuramente prima ad impostare questa proprietà nel markup. sull'ultima ddl non ti serve, visto che non è collegata ad un'altra e non ha senso fargli fare il databind.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
21 messaggi dal 10 agosto 2006
Ho provato a fare in questa maniera ma niente...non riesco a gestire assolutamente nulla. Ho messo nel codice html Autopostback="True" e una response.write(valore della dropdownlist) nel codice .vb. Nonostante scatti il postback non visualizzo nulla a video se non quando la pagina viene caricata per la prima volta.
Spero sia un problema risolvibile...altrimenti bisognerà pensare a qualche altra soluzione.

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.