DotNetCampania
Il primo portale campano dedicato allo sviluppo software con tecnologie Microsoft

Problema CheckBox

rated by 0 users
Answered (Not Verified) This post has 0 verified answers | 7 Replies | 2 Followers

Top 50 Partecipanti
6 Post
Punteggio 110
Enso posted on 29 gen 2010 11:13

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.

  • | Punteggio Post: 20

All Replies

Top 10 Partecipanti
Maschio
288 Post
Punteggio 3.802

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à!

Top 50 Partecipanti
6 Post
Punteggio 110

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

{

 

 

background:url(images/check.gif)

}

 

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.

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
288 Post
Punteggio 3.802

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!

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 20
Top 50 Partecipanti
6 Post
Punteggio 110
Beh, per comi mi sono espresso la tua rettifica è più che giusta, ma visto che ci troviamo in tema di puntualizzazioni è meglio precisare che il cambio di skin di un controllo statico è possibile solo durante o prima dell'evento Page_PreInit. Per un controllo dinamico invece la proprietà va impostata prima di aggiungerlo all'insieme Controls. Baciamo le mani...
  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
288 Post
Punteggio 3.802

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

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 20
Top 50 Partecipanti
6 Post
Punteggio 110

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!!! Big Smile

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
288 Post
Punteggio 3.802

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!!! Big Smile

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.

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 5
Pagina 1 di 1 (8 elementi) | RSS

Associazione Culturale DotNetCampania - C.F.: 95127870632

Powered by Community Server (Commercial Edition), by Telligent Systems