![]() |
String Array Property produces Parser Error
Dear readers,
I'm having problems with creating a custom control that accepts an array of strings as a property. First I used the following code which produced a Parser Error <Bindable(True), Category(_ClassName)> _ Public Property [MenuItems]() As String() Get Return CType(ViewState("__stringMenuItems"), String()) End Get Set(ByVal Value As String()) ViewState("__stringMenuItems") = Value End Set End Property Afterwards I tried several attributes, one of them (PersistenceMode(PersistenceMode.InnerDefaultPrope rty)) produces additional "html" tags but this doesn't work either. Does anyone know how to solve this? Many thanks, Rémy Samulski |
Re: String Array Property produces Parser Error
Rémy,
it is fully possible to create a property who's underlying type is a string array. rather then dealing with the sizing issues of a static array though, perhaps you could make that property an Arraylist or Hashtable? Mike MacMillan Rémy Samulski wrote: > Dear readers, > > I'm having problems with creating a custom control that accepts an > array of strings as a property. First I used the following code which > produced a Parser Error > > <Bindable(True), Category(_ClassName)> _ > Public Property [MenuItems]() As String() > Get > Return CType(ViewState("__stringMenuItems"), String()) > End Get > Set(ByVal Value As String()) > ViewState("__stringMenuItems") = Value > End Set > End Property > > Afterwards I tried several attributes, one of them > (PersistenceMode(PersistenceMode.InnerDefaultPrope rty)) produces > additional "html" tags but this doesn't work either. > > Does anyone know how to solve this? > > Many thanks, > Rémy Samulski |
Re: String Array Property produces Parser Error
Dear Mike,
Thx for replying my question but I don't have any problems with sizing issues of a string array. What I'm trying to do is to make a custom control that can be set on design time in Visual Studio.net 2003. That's why I have chosen a String array and not for example an ArrayList (which can't be filled on design-time (one can only add Objects without filling the values). Everything works well except when I fill the String Array the HTML code of the concerned object is: <cc1:TabPages id="TabPages4" runat="server" MenuItems="String[] Array"></cc1:TabPages> The parser than (after saving and reopening the WebForm) throws an parser error stating it can't create an object of type 'System.String[]' from its string representation 'String[] Array' for the 'MenuItems' property. When I insert the (PersistenceMode(PersistenceMode.InnerDefaultPrope rty)) attribute in the code above (see first post) the HTML code changes to: <cc1:TabPages id="TabPages5" runat="server"> <System.String Length="4"></System.String> <System.String Length="8"></System.String> </cc1:TabPages> But now the parser return the error: '' could not be set on property 'MenuItems'. Furthermore when I select the view HTML the HTML code shows the error: The active schema does not support the element 'System.String'. Anyone an example on how to implement an array property which can be edited on design time? Many thanks, Rémy |
Re: String Array Property produces Parser Error
Remy,
it is possible to have a variable represet a string array, but there will need to be a bit of extra work on your side. if this property will be hardcoded into the tag, you can build the property perhaps during the AddParsedSubObject method of the page/control that contains your custom control. ex: <cc1:Something someAttrib="12,33,45,66,77,823,12"/> this could be parsed into an int or string array during the AddParsedSubObject method (or OnInit, or whatever...). you could even provide a custom Set accessor for the property that exposes this array, and parse the deliminated string there. easy answer though, you won't be able to define on the frontend the contents of the array, you will need a bit of manual work to make it an array. Mike Rémy Samulski wrote: > Dear Mike, > > Thx for replying my question but I don't have any problems with sizing > issues of a string array. What I'm trying to do is to make a custom > control that can be set on design time in Visual Studio.net 2003. > That's why I have chosen a String array and not for example an > ArrayList (which can't be filled on design-time (one can only add > Objects without filling the values). Everything works well except when > I fill the String Array the HTML code of the concerned object is: > > <cc1:TabPages id="TabPages4" runat="server" MenuItems="String[] > Array"></cc1:TabPages> > > The parser than (after saving and reopening the WebForm) throws an > parser error stating it can't create an object of type > 'System.String[]' from its string representation 'String[] Array' for > the 'MenuItems' property. > > When I insert the > (PersistenceMode(PersistenceMode.InnerDefaultPrope rty)) attribute in > the code above (see first post) the HTML code changes to: > > <cc1:TabPages id="TabPages5" runat="server"> > <System.String Length="4"></System.String> > <System.String Length="8"></System.String> > </cc1:TabPages> > > But now the parser return the error: '' could not be set on property > 'MenuItems'. Furthermore when I select the view HTML the HTML code > shows the error: The active schema does not support the element > 'System.String'. > > Anyone an example on how to implement an array property which can be > edited on design time? > > Many thanks, > Rémy |
Re: String Array Property produces Parser Error
Dear Mike,
OK this is the "over my head" stuff. Is it possible to add some attribute to a property that will prevent the value to be set in the HTML? What I'm proposing is 2 properties: one will be the in the background property that isn't visible in the IDE (<Browsable(False), EditorBrowsable(EditorBrowsableState.Never)>). This background property will be a string that has to be splitted to get the array we want. The other is a array property that can be edited using the IDE, but it shouldn't add any values in the HTML part in order to not rise a parser error. Hmm, hope it is clear what I'm trying to say =( Many thanks for your previous answers hope you can help me out with this, Rémy |
Re: String Array Property produces Parser Error
Remy,
so what you're saying is you'd like to have 2 properties; one will return string and will hold a delimited set of data, the other will be an array and will hold the delimited data in a strongly typed array. further, you'd like the user to modify the array's contents using the IDE, and have that persist the correct delimited string in the string property? you will need custom design time support for your control to set the contents of that property correctly. also, being the IDE can't see the string property, users coding directly(such as with notepad) will still see the string property as a valid property to assign to. Mike MacMillan Rémy Samulski wrote: > Dear Mike, > > OK this is the "over my head" stuff. Is it possible to add some > attribute to a property that will prevent the value to be set in the > HTML? What I'm proposing is 2 properties: one will be the in the > background property that isn't visible in the IDE (<Browsable(False), > EditorBrowsable(EditorBrowsableState.Never)>). This background property > will be a string that has to be splitted to get the array we want. The > other is a array property that can be edited using the IDE, but it > shouldn't add any values in the HTML part in order to not rise a parser > error. > > Hmm, hope it is clear what I'm trying to say =( > > Many thanks for your previous answers hope you can help me out with > this, > Rémy |
| All times are GMT. The time now is 10:35 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.