Ask a Question related to ASP.NET, Design and Development.
-
John Kievlan #1
Readonly Checkbox?
Well, I'm sure you guys know that the ASP.NET Checkbox
control doesn't have a Readonly property. I'm writing an
application where I need it to have, that is, I want to
be able to set the Checked property in code, but if the
user clicks on it, the checkbox won't change.
Now, I'll admit I truly don't know how to do this. I can
easily write a control where I can't set the Checked
property in code, as follows:
'--------- Begin Code --------------
<DefaultProperty("Checked"), ToolboxData("<{0}:CB
runat=server></{0}:CB>")> Public Class CB
Inherits System.Web.UI.WebControls.CheckBox
Dim _readonly As Boolean
<Bindable(True), Category("Appearance"), DefaultValue
(False)> Overrides Property [Checked]() As Boolean
Get
Return MyBase.Checked
End Get
Set(ByVal Value As Boolean)
If Not _readonly Then
MyBase.Checked = Value
End If
End Set
End Property
<Bindable(True), Category("Appearance"), DefaultValue
(False)> Property [Readonly]() As Boolean
Get
Return _readonly
End Get
Set(ByVal Value As Boolean)
_readonly = Value
End Set
End Property
End Class
'--------- End Code --------------
With that control, I can't set the Checked property in
code, but if I view a form with that control in my
browser and click on the checkbox, it checks or unchecks
as usual, which is exactly the opposite of the behavior
I'd like it to have.
Now I can't figure out how to get that functionality, or
indeed how to handle the event of the user clicking on
the control at all without posting the form back to the
server. I played with overriding the various Render
methods, but that got me nowhere.
The basic problem is that I have no clue how the control
is drawn as checked or unchecked when the user clicks it
on his/her browser. Apparently there's no postback (as I
would assume in any case), so there must be some code
that runs on the client side to handle it. Can I alter
that code? How do I get to it? Keep in mind that I want
this to be a server control, not a client control. I
really don't even need to mess with the Checked property
of the control -- if I could just prevent it from drawing
the checked/unchecked state when it's clicked, I will
have accomplished what I want, since my goal is to have a
control in which I can display boolean data without the
user having the ability to alter the visual state of the
control.
Anyone have any ideas? Thanks in advance.
John Kievlan Guest
-
Readonly Field
Dreamwever places this code in a readonly field readonly="readonly" but then The readonly attribute of the INPUT tag is not supported. ... -
Readonly listbox
I'm developing a set of WebControls that can be toggled between Readwrite and Readonly modes. They are each inherited from their standard webcontrol... -
Collection Readonly
I have a Web service with a serializable collection class. My test app can read the collection without any problems. The problem I'm having is... -
Howto bind CheckBox to the datagrid/ Then update the database field when the checkbox is clicked.
I am trying to update the database field when the checkbox is clicked. I am trying to modified the following solution but.. got stuck on the... -
ReadOnly checkbox in datagrid
Hi Group, I have a checkbox column in a web datagrid which is related to a "Product in stock" property. The grid is in view mode, so the user... -
Shawn B. #2
Re: Readonly Checkbox?
Either set Enabled=False (it'll be dim) or... in the render...
Attributes.Add("onClick", "this.checked=" + lcase(checked.tostring) + ";")
So that if it's enabled or disabled and you don't want it dim, it'll alsways
be the value that it started with.
That should do,
Thanks,
Shawn
"John Kievlan" <jodakim@comcast.com> wrote in message
news:03ff01c35617$b527d930$a501280a@phx.gbl...> Well, I'm sure you guys know that the ASP.NET Checkbox
> control doesn't have a Readonly property. I'm writing an
> application where I need it to have, that is, I want to
> be able to set the Checked property in code, but if the
> user clicks on it, the checkbox won't change.
>
> Now, I'll admit I truly don't know how to do this. I can
> easily write a control where I can't set the Checked
> property in code, as follows:
>
> '--------- Begin Code --------------
> <DefaultProperty("Checked"), ToolboxData("<{0}:CB
> runat=server></{0}:CB>")> Public Class CB
> Inherits System.Web.UI.WebControls.CheckBox
>
> Dim _readonly As Boolean
>
> <Bindable(True), Category("Appearance"), DefaultValue
> (False)> Overrides Property [Checked]() As Boolean
> Get
> Return MyBase.Checked
> End Get
>
> Set(ByVal Value As Boolean)
> If Not _readonly Then
> MyBase.Checked = Value
> End If
> End Set
> End Property
>
> <Bindable(True), Category("Appearance"), DefaultValue
> (False)> Property [Readonly]() As Boolean
> Get
> Return _readonly
> End Get
>
> Set(ByVal Value As Boolean)
> _readonly = Value
> End Set
> End Property
> End Class
> '--------- End Code --------------
>
> With that control, I can't set the Checked property in
> code, but if I view a form with that control in my
> browser and click on the checkbox, it checks or unchecks
> as usual, which is exactly the opposite of the behavior
> I'd like it to have.
>
> Now I can't figure out how to get that functionality, or
> indeed how to handle the event of the user clicking on
> the control at all without posting the form back to the
> server. I played with overriding the various Render
> methods, but that got me nowhere.
>
> The basic problem is that I have no clue how the control
> is drawn as checked or unchecked when the user clicks it
> on his/her browser. Apparently there's no postback (as I
> would assume in any case), so there must be some code
> that runs on the client side to handle it. Can I alter
> that code? How do I get to it? Keep in mind that I want
> this to be a server control, not a client control. I
> really don't even need to mess with the Checked property
> of the control -- if I could just prevent it from drawing
> the checked/unchecked state when it's clicked, I will
> have accomplished what I want, since my goal is to have a
> control in which I can display boolean data without the
> user having the ability to alter the visual state of the
> control.
>
> Anyone have any ideas? Thanks in advance.
Shawn B. Guest
-
John Kievlan #3
Re: Readonly Checkbox?
render...>-----Original Message-----
>Either set Enabled=False (it'll be dim) or... in the
Yes, I know about that, that's what I've been doing, but
I don't like having it grayed out... it doesn't look
quite so neat... and organized... as I'd like it to :P
(checked.tostring) + ";")>Attributes.Add("onClick", "this.checked=" + lcaseit dim, it'll alsways>
>So that if it's enabled or disabled and you don't wantThanks, friend! That did it! It works perfectly. My>be the value that it started with.
code is now as follows:
Protected Overrides Sub Render(ByVal writer As
System.Web.UI.HtmlTextWriter)
If _readonly Then
MyBase.Attributes.Add
("onClick", "javascript:" & Me.ID & ".checked=" + LCase
(Checked.ToString) + ";")
End If
MyBase.Render(writer)
End Sub
That adds a SPAN element around the checkbox that
contains the onClick event. I added the "javascript:"
because I use javascript and vbscript both on this
particular form, and the default page language is
vbscript. "this.checked" doesn't work since it thinks
you're talking about the SPAN element, so I changed it to
use the ID of the control -- and it works great. A
readonly control can only be changed from code, a non-
readonly control can be changed both in code and by being
clicked.
Again, thanks.
--John
John Kievlan Guest
-
Shawn B. #4
Re: Readonly Checkbox?
You might also try
addattribute("onClick", "return false")
Thanks,
Shawn
"John Kievlan" <jodakim@comcast.com> wrote in message
news:0bd301c356a8$20002240$a601280a@phx.gbl...>> render...> >-----Original Message-----
> >Either set Enabled=False (it'll be dim) or... in the
>
> Yes, I know about that, that's what I've been doing, but
> I don't like having it grayed out... it doesn't look
> quite so neat... and organized... as I'd like it to :P
>> (checked.tostring) + ";")> >Attributes.Add("onClick", "this.checked=" + lcase> it dim, it'll alsways> >
> >So that if it's enabled or disabled and you don't want>> >be the value that it started with.
> Thanks, friend! That did it! It works perfectly. My
> code is now as follows:
>
> Protected Overrides Sub Render(ByVal writer As
> System.Web.UI.HtmlTextWriter)
> If _readonly Then
> MyBase.Attributes.Add
> ("onClick", "javascript:" & Me.ID & ".checked=" + LCase
> (Checked.ToString) + ";")
> End If
> MyBase.Render(writer)
> End Sub
>
> That adds a SPAN element around the checkbox that
> contains the onClick event. I added the "javascript:"
> because I use javascript and vbscript both on this
> particular form, and the default page language is
> vbscript. "this.checked" doesn't work since it thinks
> you're talking about the SPAN element, so I changed it to
> use the ID of the control -- and it works great. A
> readonly control can only be changed from code, a non-
> readonly control can be changed both in code and by being
> clicked.
>
> Again, thanks.
>
> --John
Shawn B. Guest



Reply With Quote

