![]() | |
![]() |
| | Thread Tools | Search this Thread | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Hi all, I'm building a custom control. I would like that on the control you can set some 'rights' For that I have an enum: public enum GroupRights { Group0 = 0, Group1 = 1, Group2 = 2, Group3 = 3, Group4 = 4, Group5 = 5, } In design time I want to set these right (can be multiple rights at the same time) So I put them in a generic list: [Category("Rights")] [DefaultValue("")] [Localizable(true)] [Bindable(true)] public List<GroupRights> ControlRights { get { List<GroupRights> temp = (List<GroupRights>)ViewState["ControlRights"]; return ((object)temp == null) ? new List<GroupRights>() : temp; } set { ViewState["ControlRights"] = value; }} In desgin time I get the controls window with the GrouRights enum to choose from. But when I add one right in the collection window I get the message: Cannot create an object of type 'System.Collections.Generic.List`1[[GroupRights, MaxControls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' from its string representation '(Collection)' for the 'ControlRights' property. Also the property can not be read out during runtime. What am I doing wrong or forgetting? tia, Class |
#3
| |||
| |||
|
|
Your class must be serializible. Or use Session instead of ViewState. |
|
Your class must be serializible. Or use Session instead of ViewState. Sincerely yours, Michael B. Tkachev. m_tkachev (AT) hotmail (DOT) com "Class" <NoSpam@Class> wrote in message news:eOfpVChOHHA.2140 (AT) TK2MSFTNGP03 (DOT) phx.gbl... Hi all, I'm building a custom control. I would like that on the control you can set some 'rights' For that I have an enum: public enum GroupRights { Group0 = 0, Group1 = 1, Group2 = 2, Group3 = 3, Group4 = 4, Group5 = 5, } In design time I want to set these right (can be multiple rights at the same time) So I put them in a generic list: [Category("Rights")] [DefaultValue("")] [Localizable(true)] [Bindable(true)] public List<GroupRights> ControlRights { get { List<GroupRights> temp = (List<GroupRights>)ViewState["ControlRights"]; return ((object)temp == null) ? new List<GroupRights>() : temp; } set { ViewState["ControlRights"] = value; }} In desgin time I get the controls window with the GrouRights enum to choose from. But when I add one right in the collection window I get the message: Cannot create an object of type 'System.Collections.Generic.List`1[[GroupRights, MaxControls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' from its string representation '(Collection)' for the 'ControlRights' property. Also the property can not be read out during runtime. What am I doing wrong or forgetting? tia, Class |
#4
| |||
| |||
|
|
Hi Michael, Thanks for your response. Your class must be serializible. Or use Session instead of ViewState. Which class do you mean, that needs to be serializable? The enum? or The List class? The list is a generic .NET collection class which is serializable already, right? Session?? There is no Session object in a web custom control, what do you mean?? Thanks, Class "Michael Tkachev" <m_tkachev (AT) hotmail (DOT) com> wrote in message news:uqGLwsjOHHA.140 (AT) TK2MSFTNGP04 (DOT) phx.gbl... Your class must be serializible. Or use Session instead of ViewState. Sincerely yours, Michael B. Tkachev. m_tkachev (AT) hotmail (DOT) com "Class" <NoSpam@Class> wrote in message news:eOfpVChOHHA.2140 (AT) TK2MSFTNGP03 (DOT) phx.gbl... Hi all, I'm building a custom control. I would like that on the control you can set some 'rights' For that I have an enum: public enum GroupRights { Group0 = 0, Group1 = 1, Group2 = 2, Group3 = 3, Group4 = 4, Group5 = 5, } In design time I want to set these right (can be multiple rights at the same time) So I put them in a generic list: [Category("Rights")] [DefaultValue("")] [Localizable(true)] [Bindable(true)] public List<GroupRights> ControlRights { get { List<GroupRights> temp = (List<GroupRights>)ViewState["ControlRights"]; return ((object)temp == null) ? new List<GroupRights>() : temp; } set { ViewState["ControlRights"] = value; }} In desgin time I get the controls window with the GrouRights enum to choose from. But when I add one right in the collection window I get the message: Cannot create an object of type 'System.Collections.Generic.List`1[[GroupRights, MaxControls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' from its string representation '(Collection)' for the 'ControlRights' property. Also the property can not be read out during runtime. What am I doing wrong or forgetting? tia, Class |
#5
| |||
| |||
|
|
Take the "Page" property and there you can find Session "Class" <NoSpam@Class> wrote in message news:u0IHW7jOHHA.4100 (AT) TK2MSFTNGP04 (DOT) phx.gbl... Hi Michael, Thanks for your response. Your class must be serializible. Or use Session instead of ViewState. Which class do you mean, that needs to be serializable? The enum? or The List class? The list is a generic .NET collection class which is serializable already, right? Session?? There is no Session object in a web custom control, what do you mean?? Thanks, Class "Michael Tkachev" <m_tkachev (AT) hotmail (DOT) com> wrote in message news:uqGLwsjOHHA.140 (AT) TK2MSFTNGP04 (DOT) phx.gbl... Your class must be serializible. Or use Session instead of ViewState. Sincerely yours, Michael B. Tkachev. m_tkachev (AT) hotmail (DOT) com "Class" <NoSpam@Class> wrote in message news:eOfpVChOHHA.2140 (AT) TK2MSFTNGP03 (DOT) phx.gbl... Hi all, I'm building a custom control. I would like that on the control you can set some 'rights' For that I have an enum: public enum GroupRights { Group0 = 0, Group1 = 1, Group2 = 2, Group3 = 3, Group4 = 4, Group5 = 5, } In design time I want to set these right (can be multiple rights at the same time) So I put them in a generic list: [Category("Rights")] [DefaultValue("")] [Localizable(true)] [Bindable(true)] public List<GroupRights> ControlRights { get { List<GroupRights> temp = (List<GroupRights>)ViewState["ControlRights"]; return ((object)temp == null) ? new List<GroupRights>() : temp; } set { ViewState["ControlRights"] = value; }} In desgin time I get the controls window with the GrouRights enum to choose from. But when I add one right in the collection window I get the message: Cannot create an object of type 'System.Collections.Generic.List`1[[GroupRights, MaxControls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' from its string representation '(Collection)' for the 'ControlRights' property. Also the property can not be read out during runtime. What am I doing wrong or forgetting? tia, Class |
#6
| |||
| |||
|
|
Whoa, Whoa, Whoa, Whoa. Remember that a session should only be used to store information when this information is stored on a "per" user basis. What if you have 30 of these controls on a single web page and the user is browsing 2 different web pages at the same time ont he same site under the same session. That's 60 controls overwriting each other. Class, what is happening is the fact that you are trying to serialize Enums. Your first step should be to convert your List<EnumRights> to a enumrights[], this is done through the .ToArray() method. Do this when you save your items in the viewstaet. When you load your viewstaet you can create a new List<EnumRights> by using the MyEnumRights = new List<EnumRights>((List<Enumrights>) viewstate["bleah"]); The Constructor overload for a List<> accepts Ienumerable which a type[] implements so this works. This should solve all of your serialization problems. Worst case scenario - you may have to, assuming your enums have values, convert it to an array of integers - but I don't think you have to do this. "Michael Tkachev" wrote: Take the "Page" property and there you can find Session "Class" <NoSpam@Class> wrote in message news:u0IHW7jOHHA.4100 (AT) TK2MSFTNGP04 (DOT) phx.gbl... Hi Michael, Thanks for your response. Your class must be serializible. Or use Session instead of ViewState. Which class do you mean, that needs to be serializable? The enum? or The List class? The list is a generic .NET collection class which is serializable already, right? Session?? There is no Session object in a web custom control, what do you mean?? Thanks, Class "Michael Tkachev" <m_tkachev (AT) hotmail (DOT) com> wrote in message news:uqGLwsjOHHA.140 (AT) TK2MSFTNGP04 (DOT) phx.gbl... Your class must be serializible. Or use Session instead of ViewState. Sincerely yours, Michael B. Tkachev. m_tkachev (AT) hotmail (DOT) com "Class" <NoSpam@Class> wrote in message news:eOfpVChOHHA.2140 (AT) TK2MSFTNGP03 (DOT) phx.gbl... Hi all, I'm building a custom control. I would like that on the control you can set some 'rights' For that I have an enum: public enum GroupRights { Group0 = 0, Group1 = 1, Group2 = 2, Group3 = 3, Group4 = 4, Group5 = 5, } In design time I want to set these right (can be multiple rights at the same time) So I put them in a generic list: [Category("Rights")] [DefaultValue("")] [Localizable(true)] [Bindable(true)] public List<GroupRights> ControlRights { get { List<GroupRights> temp = (List<GroupRights>)ViewState["ControlRights"]; return ((object)temp == null) ? new List<GroupRights>() : temp; } set { ViewState["ControlRights"] = value; }} In desgin time I get the controls window with the GrouRights enum to choose from. But when I add one right in the collection window I get the message: Cannot create an object of type 'System.Collections.Generic.List`1[[GroupRights, MaxControls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' from its string representation '(Collection)' for the 'ControlRights' property. Also the property can not be read out during runtime. What am I doing wrong or forgetting? tia, Class |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
| |