Cambiare colore a un item di una DropDownList
-
2012年6月13日 上午 10:47
Volevo cambiare il colore ad un item di una dropdownlist e ho provato con questo codice
Dim itm As New ListItem
itm.Text = dtReader("SN")
itm.Value = dtReader("ACCOUNTPRODUCTID")
itm.Attributes("style") = "background-color:red;"
ddlSN.Items.Add(itm)
ma non funziona e non capisco il perchè
所有回覆
-
2012年6月13日 上午 11:00解答者
Questo codice su Internet Explorer 9 funziona correttamente.
Su che browser l'hai provato?
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva- 已標示為解答 Marco MinervaMicrosoft Community Contributor, Editor 2012年6月18日 上午 09:40
- 已取消標示為解答 Marco MinervaMicrosoft Community Contributor, Editor 2012年6月18日 上午 09:40
-
2012年6月13日 上午 11:12Hai ragione, io ho Firefox (13) impostato come browser predefinito e VS2008 in debug usa quello. In Firefox il colore non cambia. come posso rendere questo codice "browser indipendent" ' (o almeno compatibile con Firefox)
-
2012年6月13日 上午 11:38Ho provato con FireFox 13 e funziona.
ASP.NET in questo caso ovviamente non entra in gioco. L'attributo style sul tag option è supportato in FF, personalmente non cambierei lo sfondo, IMHO la UI diventa poco usabile.
Verifica l'HTML generato.Matteo Migliore
Bloghttp://blogs.ugidotnet.org/matteomigliore
Twitterhttp://twitter.com/matteomigliore
CodePlex -
2012年6月13日 下午 12:16
Effettivamente l'HTML pare essere corretto
<select name="ctl00$ContentPlaceHolder1$TabContainer1$TabTicket$ddlSN" id="ctl00_ContentPlaceHolder1_TabContainer1_TabTicket_ddlSN"> <option selected="selected" value="Q6UJ9A004CS5" style="background-color:green; color:white;">40211330 - PRISMA 3000 SPT H115</option>
Non capisco perchè però visivamente il dropdownlist non cambia.
Il motivo per cui voglio cambiare l'aspetto di un item (solo alcuni) è che sulla base di una condizione che si verifica
(Macchinario fuori garanzia) mi sarebbe piaciuto colorare l'item in modo da farlo risaltare
-
2012年6月13日 下午 12:22Prova a isolare la select + option in un nuovo file HTML, senza CSS e JS.
Dovrebbe funzionare, quindi probabilmente c'è qualche altra impostazione nella pagina che non permette di cambiare il colore di sfondo.Matteo Migliore
Bloghttp://blogs.ugidotnet.org/matteomigliore
Twitterhttp://twitter.com/matteomigliore
CodePlex -
2012年6月13日 下午 12:31Ho fatto come dici, ho isolato la select + option in un file .htlm. Caricandolo con FF il colore non cambia, con IE9 si :-(
-
2012年6月13日 下午 03:34解答者Puoi mostrare questo HTML?
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva -
2012年6月17日 下午 04:17
Scusa se rispondo solo ora, ma sono stato bloccato da altre cose in questi giorni.
Questo è l'HTML
<select name="ddlSN" id="TabTicket_ddlSN">
<option selected="selected" value="Q6UJ9A004CS5" style="background-color: green">40211330 - PRISMA 3000 SPT H115</option>
Se salvo questo codice in un file .html e lo carico in IE9 lo sfondo viene verde, con FF resta bianco
-
2012年6月17日 下午 04:57解答者
Ho provato con Firefox e lo sfondo degli elementi nella DropDownList viene impostato correttamente.
Mi sembra di capire però che tu ti stia riferendo al colore di sfondo dell'elemento selezionato, che appare quando la lista è chiusa. Questa cosa effettivamente funziona in Internet Explorer, ma non in Firefox. Per farla funzionare anche in Firefox, devi ricorrere ad un po' di Javascript.
Devi aggiungere l'attributo OnChange nella dichiarazione della DropDownList, in modo che il risultato finale sia questo:
<select name="ddlSN" id="TabTicket_ddlSN" onChange="this.style.backgroundColor=this.options[this.selectedIndex].style.backgroundColor">Così facendo, il colore di sfondo dell'elemento mostrato quando la lista è chiusa viene reso uguale al colore di sfondo dell'elemento selezionato.
Considera inoltre che devi impostare un colore di sfondo iniziale per la DropDownList, che deve essere uguale a quello dell'elemento selezionato (riprendendo l'esempio che hai scritto nel post precedente, deve essere green, ovvero il colore dell'elemento che ha la proprietà selected impostata).
Per fare questo, aggiungi un attributo style alla DropDownList, in cui imposti background-color (così come fai per gli elemtenti della lista).
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva- 已編輯 Marco MinervaMicrosoft Community Contributor, Editor 2012年6月17日 下午 05:00
- 已編輯 Marco MinervaMicrosoft Community Contributor, Editor 2012年6月17日 下午 05:00
-
2012年6月17日 下午 09:55
Ok, grazie domani provo.
Quello che voglio fare comunque è questo: Quando carico gli item nella dropdownlist, eseguo un test sulla base del quale assegno un colore all'item. In questo modo quando espondo la ddl, devo vedere una serie di item alcuni dei quali colorati. L'obiettivo è evidenziare in un elenco di macchine quelle ancora in garanzia
-
2012年6月18日 上午 08:15Infatti, ma in questo caso funziona anche su FF, difficile dire come mai a te non funziona.
Sia a me che a Marco le option risultano colorate.Matteo Migliore
Bloghttp://blogs.ugidotnet.org/matteomigliore
Twitterhttp://twitter.com/matteomigliore
CodePlex -
2012年6月18日 上午 09:25
Ok, vorrà dire che cercherò un modo diverso di evidenziare quello che mi serve.
Certo che è strano, anche perchè io uso lo stesso codice per cambiare colore agli item di una checkboxlist e in quel caso funziona tutto :-((
-
2012年6月18日 上午 09:28解答者
Perché dici così?
Se segui la strada che ti ho indicato nel mio ultimo post, puoi ottenere una soluzione che funziona correttamente sia su Internet Explorer sia su Firexfox.
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva -
2012年6月18日 上午 09:33A lui non serve che dopo la selezione la select cambi colore ma che gli item (le option) siano colorate.
A me e a te funziona, lui invece le vede bianche nonostante lo style impostato. Non mi viene niente nulla però.Matteo Migliore
Bloghttp://blogs.ugidotnet.org/matteomigliore
Twitterhttp://twitter.com/matteomigliore
CodePlex -
2012年6月18日 上午 09:37解答者
Che versione di Firefox stai usando? Hai lo stesso problema con Chrome?
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva -
2012年6月18日 上午 09:42
Questo è il codice HTML da provare, attenzione, che con un solo item il colore non cambia perchè si vede quello del colore di selezione (blue normalmente):
<html> <body> <select> <option value="1" style="background-color: green">value1</option> <option selected="selected" value="2" style="background-color: red">value2</option> </select> </body> </html>
Matteo Migliore
Bloghttp://blogs.ugidotnet.org/matteomigliore
Twitterhttp://twitter.com/matteomigliore
CodePlex -
2012年6月18日 上午 11:02
Versione di FF usata l'ultima rilasciata. Con chrome non ho provato. per quanto riguarda il codice sopra, effettivamente così funziona per gli item della lista, però nel momento che l'item colorato verde viene selezionato, diventa bianco.
Carico il file html e vedo l'item selezionato (value2) con sfondo bianco
Esplodo la lista degli item e vedo value1 verde e value2 bianco
Seleziono value1 e diventa bianco.
Potrebbe andarmi bene, tranne per il caso in cui la ddl è popolata da un unico record (caso di clienti con una sola macchina nostra), in quel caso non c'è verso di vederlo verde con FF (almeno a me).
- 已編輯 Gimbo1 2012年6月18日 上午 11:05
-
2012年6月18日 上午 11:12解答者
Quindi il tuo problema è il colore di sfondo dell'elemento selezionato nella DropDownList (oppure dell'unico elemento che hai, che di conseguenza è quello selezionato), come avevo ipotizzato qualche post fa.
Segui quindi il suggerimento che ti ho dato, ovvero l'utilizzo di Javascript per impostare il colore di sfondo della DropDownList in base a quello dell'elemento selezionato.
Così otterrai una soluzione funzionante su tutti i browser.
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva- 已標示為解答 Gimbo1 2012年7月2日 上午 11:50
-
2012年6月24日 下午 10:33解答者
Ciao!
La soluzione che ti ho indicato ha risolto il tuo problema? Oppure hai ancora qualche dubbio?
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva -
2012年6月28日 下午 08:07Scusa Marco, in realtà ho avuto una settimana terribile e non ho ancora provato. Mi semvra però una impostazione corretta. Domani provo e ti so dire

