IExtenderProvider

S

Shaun Wilde

Hi

I have a asp.net contol that implements IExtenderProvider, I notice however
that the extra property it adds only works for controls in the WebControl
namespace and not those in the HtmlControl namespace. This is not a big issue
however as I can handle this in my customised settings collection using
TypeConvertors. However what I'd like to do is add a couple of verbs
(perhaps) to this control that will allow me to toggle which controls are
handled by changing the background colour (via the styles perhaps). It seems
that I can change the style of the controls that are in the WebControl
namespace but not those in the HtmlControl namespace. I also notice that even
though the colour changes on the controls on the WebControls this style
change is not persisted on the page.

2 questions;

1) how do I change the style of controls in the HtmlControl namespace from
my custom control?

2) how do I persist these changes to the page?

Regards

Shaun Wilde
 
S

Steven Cheng[MSFT]

Hi Shaun,

Welcome to ASP.NET newsgroup.
From your description, you're meeting some problems when developing a
custom IExtenderProvider component which used to set Style for Webcontrols
in your composite control?

As for the two questions you mentioned:
==================
1) how do I change the style of controls in the HtmlControl namespace from
my custom control?

2) how do I persist these changes to the page?
=================

1) For HtmlXXXControls under the HtmlControls namespace, since they're
directly mapped to the html elements and don't have those encapsulated
Style Properties (like the Color, BackColor as WebControls), we should
directly use the Style property to set any css or html style as we need.
The "Style" property is a string based key/value collection which help us
define various html attributes for the control

#HtmlControl.Style Property
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWebUIHtmlContr
olsHtmlControlClassStyleTopic.asp?frame=true

2), as for persisting changes, I'm not sure what's your detailed code
logic, however based on my research the IExenderProvider interface is not
quite designed for using for WebControls and is more recommended to use in
winform design-time environment. And here is the codeproject article which
has mentioned this limitation of the IExtenderProvider component wokring in
VS.NET2003 for webcontrols:

#Extender provider components in ASP.NET: an IExtenderProvider
implementation
http://www.codeproject.com/aspnet/ExtenderProviderComponent.asp

It has mentioned a certain workaround, but I still feel it better to avoid
using it for our custom webcontrols.

Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)



--------------------
| Thread-Topic: IExtenderProvider
| thread-index: AcWHfNH9bnYvKqr7S5KKPFmakb3FQA==
| X-WBNR-Posting-Host: 195.92.40.49
| From: "=?Utf-8?B?U2hhdW4gV2lsZGU=?=" <[email protected]>
| Subject: IExtenderProvider
| Date: Wed, 13 Jul 2005 00:31:01 -0700
| Lines: 24
| Message-ID: <[email protected]>
| MIME-Version: 1.0
| Content-Type: text/plain;
| charset="Utf-8"
| Content-Transfer-Encoding: 7bit
| X-Newsreader: Microsoft CDO for Windows 2000
| Content-Class: urn:content-classes:message
| Importance: normal
| Priority: normal
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| Newsgroups: microsoft.public.dotnet.framework.aspnet.webcontrols
| NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGXA03.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl
microsoft.public.dotnet.framework.aspnet.webcontrols:9884
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webcontrols
|
| Hi
|
| I have a asp.net contol that implements IExtenderProvider, I notice
however
| that the extra property it adds only works for controls in the WebControl
| namespace and not those in the HtmlControl namespace. This is not a big
issue
| however as I can handle this in my customised settings collection using
| TypeConvertors. However what I'd like to do is add a couple of verbs
| (perhaps) to this control that will allow me to toggle which controls are
| handled by changing the background colour (via the styles perhaps). It
seems
| that I can change the style of the controls that are in the WebControl
| namespace but not those in the HtmlControl namespace. I also notice that
even
| though the colour changes on the controls on the WebControls this style
| change is not persisted on the page.
|
| 2 questions;
|
| 1) how do I change the style of controls in the HtmlControl namespace
from
| my custom control?
|
| 2) how do I persist these changes to the page?
|
| Regards
|
| Shaun Wilde
|
 
S

Shaun Wilde

Hi Steven

Unfortunately changing the Style tag for the HTML Control does not persist
on the page

Here is a code snippet of what I am doing when I change the Highlight
property in design view

Dim ctrl As Control = FindControlInContainers(setting.Control)

If TypeOf ctrl Is WebControl Then
If EnableHighlight Then
CType(ctrl, WebControl).BackColor = HighlightColour
Else
CType(ctrl, WebControl).BackColor =
System.Drawing.Color.Empty
End If
NotifyDesignerOfChange(ctrl)
ElseIf TypeOf ctrl Is HtmlControls.HtmlControl Then
If EnableHighlight Then
CType(ctrl,
HtmlControls.HtmlControl).Style("background-color") = HighlightColour.Name
Else
CType(ctrl,
HtmlControls.HtmlControl).Style.Remove("background-color")
End If
NotifyDesignerOfChange(ctrl)
End If

not sure what to do as the HtmlControl does not show any effect and the
change to this control is not persisted to the page unlike the WebControls

Thankx for the links - I had already seen the codeproject article and used
parts of it 'NotifyDesignerOfChange'

Any further advice?

Shaun
 
S

Steven Cheng[MSFT]

Thanks for your followup Shaun,

For design-time style property persistence, htmlcontrols has different
mechanism since html server control's style are directly applied as normal
html code in the html element in aspx template. And those style won't be
parsed by asp.net runtime. Currently, what I'm thinking is that since your
control is a custom composite control which contains some htmlcontrols as
child controls, is it ok that you persist those html control's style
setting as propeties of the parent asp.net server control which can be
persisted correctly. Thus, we can apply these settings to html controls at
runtime in our control creating code logic.

Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)



--------------------
| Thread-Topic: IExtenderProvider
| thread-index: AcWNzNm1LTuVewJmQLSsbN8D+aMFuw==
| X-WBNR-Posting-Host: 195.92.40.49
| From: "=?Utf-8?B?U2hhdW4gV2lsZGU=?=" <[email protected]>
| References: <[email protected]>
<[email protected]>
| Subject: RE: IExtenderProvider
| Date: Thu, 21 Jul 2005 01:19:01 -0700
| Lines: 149
| Message-ID: <[email protected]>
| MIME-Version: 1.0
| Content-Type: text/plain;
| charset="Utf-8"
| Content-Transfer-Encoding: 7bit
| X-Newsreader: Microsoft CDO for Windows 2000
| Content-Class: urn:content-classes:message
| Importance: normal
| Priority: normal
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| Newsgroups: microsoft.public.dotnet.framework.aspnet.webcontrols
| NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGXA03.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl
microsoft.public.dotnet.framework.aspnet.webcontrols:10020
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webcontrols
|
| Hi Steven
|
| Unfortunately changing the Style tag for the HTML Control does not
persist
| on the page
|
| Here is a code snippet of what I am doing when I change the Highlight
| property in design view
|
| Dim ctrl As Control = FindControlInContainers(setting.Control)
|
| If TypeOf ctrl Is WebControl Then
| If EnableHighlight Then
| CType(ctrl, WebControl).BackColor =
HighlightColour
| Else
| CType(ctrl, WebControl).BackColor =
| System.Drawing.Color.Empty
| End If
| NotifyDesignerOfChange(ctrl)
| ElseIf TypeOf ctrl Is HtmlControls.HtmlControl Then
| If EnableHighlight Then
| CType(ctrl,
| HtmlControls.HtmlControl).Style("background-color") = HighlightColour.Name
| Else
| CType(ctrl,
| HtmlControls.HtmlControl).Style.Remove("background-color")
| End If
| NotifyDesignerOfChange(ctrl)
| End If
|
| not sure what to do as the HtmlControl does not show any effect and the
| change to this control is not persisted to the page unlike the WebControls
|
| Thankx for the links - I had already seen the codeproject article and
used
| parts of it 'NotifyDesignerOfChange'
|
| Any further advice?
|
| Shaun
|
| "Steven Cheng[MSFT]" wrote:
|
| > Hi Shaun,
| >
| > Welcome to ASP.NET newsgroup.
| > From your description, you're meeting some problems when developing a
| > custom IExtenderProvider component which used to set Style for
Webcontrols
| > in your composite control?
| >
| > As for the two questions you mentioned:
| > ==================
| > 1) how do I change the style of controls in the HtmlControl namespace
from
| > my custom control?
| >
| > 2) how do I persist these changes to the page?
| > =================
| >
| > 1) For HtmlXXXControls under the HtmlControls namespace, since they're
| > directly mapped to the html elements and don't have those encapsulated
| > Style Properties (like the Color, BackColor as WebControls), we should
| > directly use the Style property to set any css or html style as we
need.
| > The "Style" property is a string based key/value collection which help
us
| > define various html attributes for the control
| >
| > #HtmlControl.Style Property
| >
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWebUIHtmlContr
| > olsHtmlControlClassStyleTopic.asp?frame=true
| >
| > 2), as for persisting changes, I'm not sure what's your detailed code
| > logic, however based on my research the IExenderProvider interface is
not
| > quite designed for using for WebControls and is more recommended to use
in
| > winform design-time environment. And here is the codeproject article
which
| > has mentioned this limitation of the IExtenderProvider component
wokring in
| > VS.NET2003 for webcontrols:
| >
| > #Extender provider components in ASP.NET: an IExtenderProvider
| > implementation
| > http://www.codeproject.com/aspnet/ExtenderProviderComponent.asp
| >
| > It has mentioned a certain workaround, but I still feel it better to
avoid
| > using it for our custom webcontrols.
| >
| > Thanks,
| >
| > Steven Cheng
| > Microsoft Online Support
| >
| > Get Secure! www.microsoft.com/security
| > (This posting is provided "AS IS", with no warranties, and confers no
| > rights.)
| >
| >
| >
| > --------------------
| > | Thread-Topic: IExtenderProvider
| > | thread-index: AcWHfNH9bnYvKqr7S5KKPFmakb3FQA==
| > | X-WBNR-Posting-Host: 195.92.40.49
| > | From: "=?Utf-8?B?U2hhdW4gV2lsZGU=?=" <[email protected]>
| > | Subject: IExtenderProvider
| > | Date: Wed, 13 Jul 2005 00:31:01 -0700
| > | Lines: 24
| > | Message-ID: <[email protected]>
| > | MIME-Version: 1.0
| > | Content-Type: text/plain;
| > | charset="Utf-8"
| > | Content-Transfer-Encoding: 7bit
| > | X-Newsreader: Microsoft CDO for Windows 2000
| > | Content-Class: urn:content-classes:message
| > | Importance: normal
| > | Priority: normal
| > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| > | Newsgroups: microsoft.public.dotnet.framework.aspnet.webcontrols
| > | NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| > | Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGXA03.phx.gbl
| > | Xref: TK2MSFTNGXA01.phx.gbl
| > microsoft.public.dotnet.framework.aspnet.webcontrols:9884
| > | X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webcontrols
| > |
| > | Hi
| > |
| > | I have a asp.net contol that implements IExtenderProvider, I notice
| > however
| > | that the extra property it adds only works for controls in the
WebControl
| > | namespace and not those in the HtmlControl namespace. This is not a
big
| > issue
| > | however as I can handle this in my customised settings collection
using
| > | TypeConvertors. However what I'd like to do is add a couple of verbs
| > | (perhaps) to this control that will allow me to toggle which controls
are
| > | handled by changing the background colour (via the styles perhaps).
It
| > seems
| > | that I can change the style of the controls that are in the
WebControl
| > | namespace but not those in the HtmlControl namespace. I also notice
that
| > even
| > | though the colour changes on the controls on the WebControls this
style
| > | change is not persisted on the page.
| > |
| > | 2 questions;
| > |
| > | 1) how do I change the style of controls in the HtmlControl namespace
| > from
| > | my custom control?
| > |
| > | 2) how do I persist these changes to the page?
| > |
| > | Regards
| > |
| > | Shaun Wilde
| > |
| >
| >
|
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top