String Array Property produces Parser Error

Discussion in 'ASP .Net Building Controls' started by Rémy Samulski, Jan 3, 2006.

  1. 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.InnerDefaultProperty)) produces
    additional "html" tags but this doesn't work either.

    Does anyone know how to solve this?

    Many thanks,
    Rémy Samulski
     
    Rémy Samulski, Jan 3, 2006
    #1
    1. Advertising

  2. 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.InnerDefaultProperty)) produces
    > additional "html" tags but this doesn't work either.
    >
    > Does anyone know how to solve this?
    >
    > Many thanks,
    > Rémy Samulski
     
    Mike MacMillan, Jan 3, 2006
    #2
    1. Advertising

  3. 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.InnerDefaultProperty)) 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
     
    Rémy Samulski, Jan 5, 2006
    #3
  4. 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.InnerDefaultProperty)) 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
     
    Mike MacMillan, Jan 6, 2006
    #4
  5. 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
     
    Rémy Samulski, Jan 11, 2006
    #5
  6. 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
     
    Mike MacMillan, Jan 13, 2006
    #6
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Jamie Ruff

    system() produces error.

    Jamie Ruff, Jul 13, 2004, in forum: Perl
    Replies:
    12
    Views:
    1,181
  2. ~~~ .NET Ed ~~~
    Replies:
    0
    Views:
    949
    ~~~ .NET Ed ~~~
    Nov 10, 2004
  3. Replies:
    0
    Views:
    412
  4. alf
    Replies:
    3
    Views:
    300
    Lawrence D'Oliveiro
    Sep 27, 2006
  5. ~~~ .NET Ed ~~~
    Replies:
    0
    Views:
    206
    ~~~ .NET Ed ~~~
    Nov 10, 2004
Loading...

Share This Page