Salve a tutti!
Vorrei colorare una checkbox, assodato che non c'è una proprietà del controllo che mi permetta di colorare la casella di spunta, ho optato per colorare il bordo in questo modo:
<asp:CheckBox ID="CheckBoxA" runat="server" BorderWidth="1" BackColor="Red" />
il problema è che tra il bordo della checkbox e la casella di spunta resta dello spazio bianco (il backcolor), ho provato ad eliminare questo spazio riducendo altezza e larghezza del controllo in questa maniera:
<asp:CheckBox ID="CheckBoxA" runat="server" BorderWidth="1" BackColor="Red" Width="10px" Height="10px" />
ottenendo come risultato il bordo ridotto e colorato, ma la casella di spunta non centrata rispetto al bordo.
In pratica è come se la casella di spunta fosse ancorata in alto e a sinistra rispetto al bordo del controllo.
Ho provato ad usare controlli checkbox (scaricati quà e là) che usando javascript sostituiscono al controllo delle immagini personalizzate a seconda che sia selezionato o meno (quindi si può colorare la checkbox come si vuole), il problema è che sembrano non funzionare in un updatepanel (guarda un pò il mio caso!!).
Soluzioni?!?
Grazie.
Ciao Enzo, il controllo Checkbox di asp.net ha un suo skin predefinito. In pratica ogni web control in asp.net ha un proprio aspetto predefinito che viene installato quando si installa il netframwork. Se vuoi che la tua checkbox abbia uno stile particolare devi applicare uno skin al controllo. Di seguito ti mando un pò di link per la creazione di skin per i webcontrol. Se riesco, tra stasera e domani ti posto anche qualche esempio. http://dotnetslackers.com/GridView/re-66393_Display_Checkboxes_in_ASP_NET_2_0_GridView_using_skins.aspx
http://asp-net-example.blogspot.com/2009/03/how-to-use-theme-and-skin-id-skinid-in_14.html
http://www.beansoftware.com/ASP.NET-Tutorials/Themes-Skins.aspx
http://msdn.microsoft.com/en-us/library/ykzx33wh.aspx
Ciao 'mbare :)
Capisc e dotnet tu? No! E allor che parl a fà!
Grazie della risposta 'mbare!Ho dato un'occhiata ai link ke hai postato, purtroppo non mi hanno aiutato a risolvere il mio problema visto che a runtime non si possono assegnare skin ai controlli (e purtroppo nel mio caso saprò solo a runtime quali checkbox devono essere colorati).
Ma ho comunque RISOLTO usando CSS in questo modo:
.myCheck {
.myCheck
{
}
dove check.gif non è altro che un quadratino colorato (creato con paint!!) leggermente più grande della casella di spunta della checkbox. In questo modo riesco ad ottenere un effetto bordo molto più "aderente" alla casella di spunta rispetto all'uso della proprietà bordercolor della checkbox (e molto meno "invasivo" rispetto alla proprietà backcolor del controllo stesso) .
Spero questo post possa tornare utile a qualcuno e ringrazio sentitamente il BUGMASTER Antonio per la sua celere risposta!
Un saluto a tutti!
Enso.
ciao enso, mi fa piacere che hai risolto in maniera molto semplice (io in realtà avevo capito che volevi cambiare l'intero aspetto del controllo checkbox).
Devo però fare una piccola puntualizzazione sulla tua affermazione:
...purtroppo non mi hanno aiutato a risolvere il mio problema visto che a runtime non si possono assegnare skin ai controlli (e purtroppo nel mio caso saprò solo a runtime quali checkbox devono essere colorati).
Con asp.net è possibile cambiare skin (e più in generali i temi) dei controlli runtime. Un riferimento può essere questo link:
http://msdn.microsoft.com/it-it/library/tx35bd89.aspx
e ricorda, di bugmaster ce n'è 1 solo, tutto il resto è Game Over!
Mi dispiace enso, ma devo contraddirti anche questa volta :D Teoricamente quello che tu affermi è giusto, ma esistono dei workaround che ti consentono comunque di raggiungere l'obiettivo. Ecco dei link con la soluzione:
http://www.velocityreviews.com/forums/t372338-how-to-change-a-controls-skinid-at-runtime-asp-net-2-0-a.html
http://www.codeproject.com/KB/HTML/ThemeChanging.aspx
http://www.codeproject.com/KB/aspnet/dynamicThemes.aspx
Il trucco consiste nel memorizzare il tema nella sessione e poi richiamare la pagina tramite un server.transfer().
Baciamo le mani!
E stasera ti tocca anche lavare la cucina! ahah
Soluzioni interessanti, che vanno bene fin quando applichi un tema "generale", ma se volessi invece applicare un determinato skin solo a determinati controlli (e non a tutti i controlli di quel tipo) nella pagina??
P.S. ti pregherei di lasciare le nostre faccende domestiche al di fuori di questo forum!!!
beh
Enso: Soluzioni interessanti, che vanno bene fin quando applichi un tema "generale", ma se volessi invece applicare un determinato skin solo a determinati controlli (e non a tutti i controlli di quel tipo) nella pagina?? P.S. ti pregherei di lasciare le nostre faccende domestiche al di fuori di questo forum!!!
beh la soluzione è semplice, ogni file di skin può contenere diverse skin per un controllo, che vengono rese univoche grazie alla proprietà SkinID. Quindi io posso avere un file del tipo Controllo.skin che contiene più di una configurazione grafica per il controllo interessato. Sta poi al programmatore implementare la logica lato codice per caricare una determinata skin piuttosto che un'altra.
Associazione Culturale DotNetCampania - C.F.: 95127870632