Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

server control collection with several types of properties

0 views
Skip to first unread message

mr dropdown

unread,
Dec 25, 2005, 6:31:01 PM12/25/05
to
Is it possible to implement a server control that will look like this:
<just:control>
<columns>
<columnTypeA id=1></columnTypeA>
<columnTypeA id=2></columnTypeA>
<columnTypeB id=3></columnTypeB>
<columnTypeB id=4></columnTypeB>
</columns>
</just:control>

While columnTypeA is a collection and columnTypeB is a different collection?
Another option is that both tags will be in the same collection (if
possible..)
Thanks.

Mike MacMillan

unread,
Dec 27, 2005, 9:12:02 PM12/27/05
to
mr. dropdown,
yes this is possible. you need to investigate the ControlBuilder
class:


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuicontrolbuilderclasstopic.asp

as this will show you how to parse custom html into strongly typed
classes. basically, your just:control class will have a ControlBuilder
attached to it via attributes, ex:

namespace Just {
[ControlBuilder(typeof(JustControlBuilder))]
public class SomeControl : Control {
}
}

first you'll need to build a class that extends the ControlBuilder
class (JustControlBuilder in the above example). this class has 2
methods you need to worry about; GetChildControlType and
AppendLiteralString. before Control.AddParsedSubObject is called,
SomeControl (above) will call GetChildControlType from your control
builder, passing the tagname of the html tag its parsing. basically,
if its a tag you're looking for you return the type of the class it
represents (see below). AppendLiteralString controls whether literal
text within your control's boundries will be handled or not.
next, you'll need a class (extends control) to represent each of the
items in the dropdown. per your description, you'd basically need 3
classes; one generic dropdown item class, and 2 collection classes to
represt itemA and itemB (perhaps one base class both can derive
from...).
each of the associated child controls can have their own control
builders to further parse nested html. the functionality is up to you
to implement...get as detailed as you'd like.
here's a link to someone who was having a similar issue (parsing
nested html), and their resolution:

http://groups.google.com/group/microsoft.public.dotnet.framework.aspnet.webcontrols/browse_thread/thread/5c1776d37f63af2b/1b67c98bae515c20?lnk=st&q=controlbuilder&rnum=2#1b67c98bae515c20

hope this helps,
Mike MacMillan

0 new messages