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
Settare un item in una dropdownlist
venerdì 01 dicembre 2006 - 14.19
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Opeth
Profilo
| Newbie
25
messaggi | Data Invio:
ven 1 dic 2006 - 14:19
Ciao ragazzi. Ho un problema con una dropdownlist.
Nella templatecolumn di un datagrid ho inserito una dropdownlist come edititemtemplate. La ddl ha come datasource un dataset contenente le tabelle categorie e sottocategorie (tra di loro relazionate tramite l'idcategoria) e come datamember ha la tabella categorie. Come datatextfield ha il campo descrizione della tabella categorie e come datavaluefield deve avere il valore di idcategoria presente nella tabella sottocategorie. Spero di essere stato abbastanza chiaro.
Ad ogni modo, al caricamento della pagina, la categoria viene visualizzata correttamente in una label, ma quando clicco su edit, compare la ddl che mostra correttamente la voce recuperata dal db, ma non è riempita correttamente, in quanto la voce che le do' in pasto io va a sovrascrivere una già presente nella lista. In altre parole, ad esempio se la tabella categorie ha 4 voci e ad esempio dal db risulta selezionata la terza voce, allora la ddl avrà si 4 voci ma risulterà che la prima e la terza sono uguali.
Ora vi posto il codice:
HTML:
(...)
<asp:datagrid id=dgSottocategorie runat="server" DataSource="<%# Datasetsottocat1 %>" AutoGenerateColumns="False" DataKeyField="IDSottoCategoria" DataMember="sottocategorie">
<Columns>
(...)
<asp:TemplateColumn HeaderText="Categoria">
<ItemTemplate>
<asp:Label id="lblcat" Runat="server"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:dropDownList id=dropcategorie DataMember="categorie" DataSource="<%# Datasetsottocat1 %>" Runat="server" DataValueField="IDCategoria" DataTextField="Descrizione">
</asp:dropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
(...)
</Columns>
</asp:datagrid>
VB
Private Sub dgSottocategorie_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgSottocategorie.ItemDataBound
If e.Item.ItemType = ListItemType.EditItem Then
Dim idcat As String
Dim drcat As DataRow
idcat = Datasetsottocat1.sottocategorie(e.Item.ItemIndex)("idcategoria")
drcat = Datasetsottocat1.categorie.FindByIDCategoria(idcat)
Dim dropcategorietemp As DropDownList = CType(e.Item.FindControl("dropcategorie"), DropDownList)
dropcategorietemp.SelectedItem.Text = drcat("Descrizione")
dropcategorietemp.SelectedItem.Value = idcat
End If
End Sub
micto27
Profilo
| Senior Member
385
messaggi | Data Invio:
lun 4 dic 2006 - 08:45
>Private Sub dgSottocategorie_ItemDataBound(ByVal sender As Object,
>ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles
>dgSottocategorie.ItemDataBound
>If e.Item.ItemType = ListItemType.EditItem Then
>Dim idcat As String
>Dim drcat As DataRow
>idcat = Datasetsottocat1.sottocategorie(e.Item.ItemIndex)("idcategoria")
>drcat = Datasetsottocat1.categorie.FindByIDCategoria(idcat)
>Dim dropcategorietemp As DropDownList = CType(e.Item.FindControl("dropcategorie"),
>DropDownList)
>dropcategorietemp.SelectedItem.Text = drcat("Descrizione")
>dropcategorietemp.SelectedItem.Value = idcat
>End If
>End Sub
Da una prima occhiata al codice sembrerebbe che tu, anzichè selezionare l'elemento del DropDownList
relativo a "idcategoria", vada a sovrascrivere Value e Text dell'elemento correntemente selezionato
(SelectedItem).
Io farei così:
dropcategorietemp.Items.FindByValue(idcat).Selected = True
Ciao, Michele
Opeth
Profilo
| Newbie
25
messaggi | Data Invio:
lun 4 dic 2006 - 11:36
Grazie Michele, avevo già trovato una soluzione, ma sicuramente la tua è più efficiente.
Giusto a titolo di cronaca, avevo risolto così:
Private Sub dgSottocategorie_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgSottocategorie.ItemDataBound
Dim idcat As String
If e.Item.ItemType = ListItemType.EditItem Then
idcat = Datasetsottocat1.sottocategorie(e.Item.ItemIndex)("idcategoria")
Dim dropcategorietemp As DropDownList = CType(e.Item.FindControl("dropcategorie"), DropDownList)
dropcategorietemp.Items.FindByValue(idcat).Selected = True
Dim li1 As ListItem
For Each li1 In dropcategorietemp.Items
If li1.Value = idcat Then
li1.Selected = True
End If
Next
end if
end sub
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 !