codetoad.com
  ASP Shopping CartForum & BBS
  - all for $20 from CodeToad Plus!
  
  Home || ASP | ASP.Net | C++/C# | DHTML | HTML | Java | Javascript | Perl | VB | XML || CodeToad Plus! || Forums || RAM 
Search Site:
Search Forums:
  View State management in User custom control  SirishaP at 12:50 on Friday, April 29, 2005
 

I have create a user control . It has custom view state . I have a collection with in collection . then the items with in collection has various properties. I am getting the form as required for the first time . but after post back i am not getting the property values, but it is showing the collection count as 4( number of items I added in the collection).But the property values for the items are null.

The User control class structure is
ItemCollection is a collection having Items .Items Have ItemParts which are of ItemPartCollection . ItemParts have some 10 Properties.
I request you to kindly help me in finding and solving the problem.

I am attaching the class code below.

ItemCollection:
public sealed class ItemsCollection : System.Collections.CollectionBase, IStateManager,INamingContainer
{
private bool _IsDirty;

#region Property - ViewState

private StateBag _ViewState;
private StateBag ViewState
{
get
{
return this._ViewState;
}
}

#endregion

#region Items

[Category("Behavior"),
Description(" collection for items"),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerDefaultProperty)
]
private ArrayList Items
{
get
{
return base.InnerList;
}
}

#endregion

#region Constructor

public ItemsCollection()
{
this._ViewState = new StateBag();
_IsDirty = true;
}

#endregion

#region Method - Add

public int Add(
Item item
)
{
return this.Items.Add (item);
}

#endregion

#region Method - Remove

public void Remove(Item item)
{
this.Items.Remove(item);
}

#endregion

#region Indexer

public Item this[int index]
{
get
{
return (Item)this.Items[index];
}
set
{
this.Items[index] = value;
}
}

#endregion

#region IStateManager Members
void IStateManager.TrackViewState()
{
this._IsDirty = true;
((IStateManager)this.ViewState).TrackViewState();
for (int itemsIterator = 0;
itemsIterator < this.Items.Count;
itemsIterator++)
{
((IStateManager)this.Items[itemsIterator]).TrackViewState();
}
}

bool IStateManager.IsTrackingViewState
{
get
{
return _IsDirty;
}
}

object IStateManager.SaveViewState()
{
object[] itemStates = new object[this.Items.Count];
for (int itemsIterator = 0;
itemsIterator < itemStates.Length;
itemsIterator++)
{
itemStates[itemsIterator] = ((IStateManager)this.Items[itemsIterator]).SaveViewState();
}
return new object[2] {((IStateManager)this.ViewState).SaveViewState(),
itemStates};
}

void IStateManager.LoadViewState(object state)
{
object[] states = (object[])state;

if (0 == states.Length)
{
return;
}

((IStateManager)this.ViewState).LoadViewState(states[0]);

object[] itemStates = (object[])states[1];
Item I = null;
for (int itemsIterator = 0;
itemsIterator < itemStates.Length;
itemsIterator++)
{
I = new Item();
((IStateManager)I).LoadViewState(itemStates[itemsIterator]);
this.Items.Add(I);
}
}

#endregion

}// END CLASS DEFINITION ItemsCollection

} // BNS.GCIS.UI.WebControls.Common

----------------------------------------------------------
Item:
[Serializable]
public sealed class Item : IStateManager,INamingContainer,ISerializable
{
private bool _IsDirty;

#region ContentDescriptionParts

private BNS.GCIS.UI.WebControls.Common.ItemPartsCollection m_ContentDescriptionParts;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
PersistenceMode(PersistenceMode.InnerProperty)]
public BNS.GCIS.UI.WebControls.Common.ItemPartsCollection ContentDescriptionParts
{
get
{
return m_ContentDescriptionParts;
}
}

#endregion

#region ContentValueParts

private BNS.GCIS.UI.WebControls.Common.ItemPartsCollection m_ContentValueParts;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
PersistenceMode(PersistenceMode.InnerProperty)]
public BNS.GCIS.UI.WebControls.Common.ItemPartsCollection ContentValueParts
{
get
{
return m_ContentValueParts;
}
}

#endregion

#region IsVisible

private bool m_IsVisible;
public bool IsVisible
{
get
{
m_IsVisible = (bool)this.ViewState["IsVisible"];
return m_IsVisible;
}
set
{
m_IsVisible = value;
ViewState["IsVisible"] = m_IsVisible;
}
}

#endregion

#region Constructor

public Item()
{
this._ViewState = new StateBag();
this.m_ContentDescriptionParts = new ItemPartsCollection();
this.m_ContentValueParts = new ItemPartsCollection();
this.IsVisible = true;
_IsDirty = true;
}

#endregion

#region Property - ViewState

private StateBag _ViewState;
private StateBag ViewState
{
get
{
return this._ViewState;
}
}

#endregion

#region IStateManager Members

void IStateManager.TrackViewState()
{
this._IsDirty = true;
((IStateManager)this.ViewState).TrackViewState();

for (int itemsIterator = 0;
itemsIterator < this.ContentDescriptionParts.Count;
itemsIterator++)
{
((IStateManager)this.ContentDescriptionParts[itemsIterator]).TrackViewState();
}

for (int itemsIterator = 0;
itemsIterator < this.ContentValueParts.Count;
itemsIterator++)
{
((IStateManager)this.ContentValueParts[itemsIterator]).TrackViewState();
}
}

bool IStateManager.IsTrackingViewState
{
get
{
return _IsDirty;
}
}

object IStateManager.SaveViewState()
{
object[] contentDescriptionStates = new object[this.ContentDescriptionParts.Count];
object[] contentValueStates = new object[this.ContentValueParts.Count];

for (int itemsIterator = 0;
itemsIterator < contentDescriptionStates.Length;
itemsIterator++)
{
contentDescriptionStates[itemsIterator] = ((IStateManager)this.ContentDescriptionParts[itemsIterator]).SaveViewState();
}

for (int itemsIterator = 0;
itemsIterator < contentValueStates.Length;
itemsIterator++)
{
contentValueStates[itemsIterator] = ((IStateManager)this.ContentValueParts[itemsIterator]).SaveViewState();
}

return new object[3] {((IStateManager)this.ViewState).SaveViewState(),
contentDescriptionStates,
contentValueStates};
}

void IStateManager.LoadViewState(object state)
{
object[] states = (object[])state;

if (0 == states.Length)
{
return;
}

((IStateManager)this.ViewState).LoadViewState(states[0]);

ItemPart IP = null;
object[] contentDescriptionStates = (object[])states[1];
for (int itemsIterator = 0;
itemsIterator < contentDescriptionStates.Length;
itemsIterator++)
{
IP = new ItemPart();
((IStateManager)IP).LoadViewState(contentDescriptionStates[itemsIterator]);
this.ContentDescriptionParts.Add(IP);
}

object[] contentValueStates = (object[])states[2];
for (int itemsIterator = 0;
itemsIterator < contentValueStates.Length;
itemsIterator++)
{
IP = new ItemPart();
((IStateManager)IP).LoadViewState(contentValueStates[itemsIterator]);
this.ContentValueParts.Add(IP);
}
}

#endregion

#region Constructor
private Item(SerializationInfo Info,StreamingContext Context)
{
ItemPartsCollection temp = new ItemPartsCollection();

m_ContentDescriptionParts = (ItemPartsCollection)Info.GetValue("ContentDescriptionParts", temp.GetType());
m_ContentValueParts = (ItemPartsCollection)Info.GetValue("ContentValueParts",temp.GetType());
}
#endregion

#region Get Object Date (Serialization)
public void GetObjectData(SerializationInfo Info ,StreamingContext Context )
{
Info.AddValue("ContentDescriptionParts", m_ContentDescriptionParts);
Info.AddValue("ContentValueParts", m_ContentValueParts);
}
#endregion

}// END CLASS DEFINITION Item

} // BNS.GCIS.UI.WebControls.Common


----------------------------------------------------------ItemPartCollection:

public sealed class ItemPartsCollection : System.Collections.CollectionBase, IStateManager ,INamingContainer
{
private bool _IsDirty;

#region ItemParts
private ArrayList ItemParts
{
get
{
return base.InnerList;
}
}

#endregion

#region Constructor

public ItemPartsCollection()
{
this._ViewState = new StateBag();

_IsDirty = true;
}

#endregion

#region Method - Add

public int Add(ItemPart itemPart)
{
return this.ItemParts.Add (itemPart);
}

#endregion

#region Method - Remove

public void Remove(ItemPart itemPart)
{
this.ItemParts.Remove(itemPart);
}

#endregion

#region Property - ViewState

private StateBag _ViewState;
private StateBag ViewState
{
get
{
return this._ViewState;
}
}

#endregion

#region Indexer
public ItemPart this[int index]
{
get
{
return (ItemPart)this.ItemParts[index];
}
set
{
this.ItemParts[index] = value;
}
}

#endregion

#region IStateManager Members

void IStateManager.TrackViewState()
{
this._IsDirty = true;
((IStateManager)this.ViewState).TrackViewState();

for (int itemsIterator = 0;
itemsIterator < this.ItemParts.Count;
itemsIterator++)
{
((IStateManager)this.ItemParts[itemsIterator]).TrackViewState();
}
}

bool IStateManager.IsTrackingViewState
{
get
{
return _IsDirty;
}
}

object IStateManager.SaveViewState()
{
object[] itemPartStates = new object[this.ItemParts.Count];

for (int itemsIterator = 0;
itemsIterator < itemPartStates.Length;
itemsIterator++)
{
itemPartStates[itemsIterator] = ((IStateManager)this.ItemParts[itemsIterator]).SaveViewState();
}

return new object[2] {((IStateManager)this.ViewState).SaveViewState(),
itemPartStates};
}

void IStateManager.LoadViewState(object state)
{
object[] states = (object[])state;

if (0 == states.Length)
{
return;
}

((IStateManager)this.ViewState).LoadViewState(states[0]);

object[] itemPartStates = (object[])states[1];
ItemPart IP = null;
for (int itemsIterator = 0;
itemsIterator < itemPartStates.Length;
itemsIterator++)
{
IP = new ItemPart();
((IStateManager)IP).LoadViewState(itemPartStates[itemsIterator]);
this.ItemParts.Add(IP);
}
}

#endregion


}// END CLASS DEFINITION ItemPartsCollection

} // BNS.GCIS.UI.WebControls.Common

----------------------------------------------------------
ItemPart:
[Serializable]
public sealed class ItemPart : IStateManager,INamingContainer,ISerializable
{
private bool _IsDirty;

#region CSSStyle

private string m_CSSStyle;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public string CSSStyle
{
get
{
object obj = ViewState["CSSStyle"];
if (null == obj)
{
return string.Empty;
}
m_CSSStyle = (string)obj;
return m_CSSStyle;
}
set
{
m_CSSStyle = value;

object obj = ViewState["CSSStyle"];
if (null == obj)
{
ViewState["CSSStyle"] = m_CSSStyle;
}
if (!m_CSSStyle.Equals(obj))
{
ViewState["CSSStyle"] = m_CSSStyle;
}
}
}

#endregion


#region DataMember

private string m_DataMember;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public string DataMember
{
get
{
object obj = ViewState["DataMember"];
if(null == obj)
{
return string.Empty;
}
m_DataMember = (string)obj ;
return m_DataMember;
}
set
{
m_DataMember = value;
object obj = ViewState["DataMember"];
if (null == obj)
{
ViewState["DataMember"] = m_DataMember;
}
if (!m_DataMember.Equals(obj))
{
ViewState["DataMember"] = m_DataMember;
}
}
}

#endregion

#region IsActive

private bool m_IsActive;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public bool IsActive
{
get
{
m_IsActive = (bool)this.ViewState["IsActive"];
return m_IsActive;
}
set
{
m_IsActive = value;

if (!m_IsActive.Equals(ViewState["IsActive"]))
{
ViewState["IsActive"] = m_IsActive;
}
}
}

#endregion

#region IsVisible

private bool m_IsVisible;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public bool IsVisible
{
get
{
m_IsVisible = (bool)this.ViewState["IsVisible"];
return m_IsActive;
}
set
{
m_IsVisible = value;
ViewState["IsVisible"] = m_IsVisible;
}
}

#endregion

#region LinkTarget

private string m_LinkTarget;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public string LinkTarget
{
get
{
object obj = ViewState["LinkTarget"];
if (null == obj)
{
return string.Empty;
}
m_LinkTarget = (string)obj;
return m_LinkTarget;
}
set
{
m_LinkTarget = value;
object obj = ViewState["LinkTarget"];
if (null == obj)
{
ViewState["LinkTarget"] = m_LinkTarget;
}
if (!m_LinkTarget.Equals(obj))
{
ViewState["LinkTarget"] = m_LinkTarget;
}
}
}

#endregion

#region DataSource

private DataTable m_DataSource;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public DataTable DataSource
{
get
{
object obj = ViewState["DataSource"];
if (null == obj)
{
return null;
}
m_DataSource = (DataTable)obj;
return m_DataSource;
}
set
{
m_DataSource = value;
ViewState["DataSource"] = m_DataSource;
}
}

#endregion

#region MetaData

private object m_MetaData;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public object MetaData
{
get
{
object obj = this.ViewState["MetaData"];

return m_MetaData;
}
set
{
m_MetaData = value;
}
}

#endregion

#region Name

private string m_Name;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public string Name
{
get
{
object obj = ViewState["Name"];
if (null == obj)
{
return string.Empty;
}
m_Name = (string)obj;
return m_Name;
}
set
{
m_Name = value;
object obj = ViewState["Name"];
if (null == obj)
{
ViewState["Name"] = m_Name;
}
if (!m_Name.Equals(obj))
{
ViewState["Name"] = m_Name;
}
}
}

#endregion

#region Text
private string m_Text;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty),
]
public string Text
{
get
{

if(ViewState["Text"] != null)
{
m_Text = ViewState["Text"].ToString();
}
return m_Text ; //ViewState["Text"].ToString().Length.ToString();
}
set
{
m_Text = value;
ViewState["Text"] = value;
}
}

#endregion

#region Type

private BNS.GCIS.UI.WebControls.Common.ItemPartType m_Type;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public BNS.GCIS.UI.WebControls.Common.ItemPartType Type
{
get
{
m_Type = (ItemPartType)ViewState["Type"];
return m_Type;
}
set
{
m_Type = value;
ViewState["Type"] = m_Type;
}
}

#endregion

#region Width

private int m_Width;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public int Width
{
get
{
m_Width = (int)this.ViewState["Width"];
return m_Width;
}
set
{
if (0 == value)
{
throw new Exception("Width value should be greater than zero");
}
m_Width = value;

if (!m_Width.Equals(ViewState["Width"]))
{
ViewState["Width"] = m_Width;
}
}
}

#endregion

#region TextFormat

private BNS.GCIS.UI.WebControls.Common.ItemTextFormat m_TextFormat;
[
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)
]
public BNS.GCIS.UI.WebControls.Common.ItemTextFormat TextFormat
{
get
{
m_TextFormat = (ItemTextFormat)ViewState["TextFormat"];
return m_TextFormat;
}
set
{
m_TextFormat = value;
ViewState["TextFormat"] = m_TextFormat;
}
}

#endregion

#region Constructor

public ItemPart()
{
this._ViewState = new StateBag();
this.CSSStyle = String.Empty;
this.DataMember = String.Empty;
this.IsActive = false;
this.IsVisible = true;
this.LinkTarget = String.Empty;
this.DataSource = null;
this.MetaData = null;
this.Name = String.Empty;
this.Text = String.Empty;
this.TextFormat = ItemTextFormat.String;
this.Type = ItemPartType.Text;
this.Width = 30;
_IsDirty = true;
}

private ItemPart(SerializationInfo Info,StreamingContext Context)
{
this.CSSStyle = Info.GetString("CSSStyle");
this.DataMember = Info.GetString("DataMember");
this.IsActive = Info.GetBoolean("IsActive");
this.IsVisible = Info.GetBoolean("IsVisible");
this.LinkTarget = Info.GetString("LinkTarget");
this.MetaData = Info.GetString("MetaData");
this.Name = Info.GetString("Name");
this.Text = Info.GetString("Text");
ItemTextFormat obj1 = new ItemTextFormat();
this.TextFormat = (ItemTextFormat)Info.GetValue("TextFormat",obj1.GetType());//,ItemTextFormat);
ItemPartType objTemp2 = new ItemPartType();
this.Type = (ItemPartType)Info.GetValue("Text",objTemp2.GetType());//,ItemPartType);
this.Width = Info.GetInt16("Width");
}
#endregion

#region Property - ViewState

private StateBag _ViewState;
private StateBag ViewState
{
get
{
return this._ViewState;
}
}

#endregion

#region IStateManager Members

void IStateManager.TrackViewState()
{
this._IsDirty = true;

((IStateManager)this.ViewState).TrackViewState();
}

bool IStateManager.IsTrackingViewState
{
get
{
return _IsDirty;
}
}

object IStateManager.SaveViewState()
{
return new object[1] {((IStateManager)this.ViewState).SaveViewState()};
}

void IStateManager.LoadViewState(object state)
{
object[] states = (object[])state;
if (0 == states.Length)
{
return;
}
((IStateManager)this.ViewState).LoadViewState(states[0]);
}
#endregion

#region Get Object Data (Serialization)
public void GetObjectData(SerializationInfo Info ,StreamingContext Context )
{
Info.AddValue("CSSStyle", m_CSSStyle);
Info.AddValue("Text",m_Text);
Info.AddValue("DataMember", m_DataMember);
Info.AddValue("IsActive", m_IsActive);
Info.AddValue("LinkTarget", m_LinkTarget);
Info.AddValue("MetaData", m_MetaData);
Info.AddValue("Name", m_Name);
Info.AddValue("TextFormat",m_TextFormat);
Info.AddValue("Type",m_Type);
Info.AddValue("Width",m_Width);
}
#endregion
}// END CLASS DEFINITION ItemPart

} // BNS.GCIS.UI.WebControls.Common









CodeToad Experts

Can't find the answer?
Our Site experts are answering questions for free in the CodeToad forums








Recent Forum Threads
•  Re: need help creating mysql database for my java code
•  Re: Write text strings to Serial Port
•  Water volume
•  Solr- New face of Search
•  Re: Insert Contents of .txt file into a .html page
•  Re: changing a forms value
•  Re: insert datepicker on each row
•  Re: Drop Down menu made viewable based on cookie
•  Re: Need Javascript Multiple sidebar menu with sliding effects


Recent Articles
ASP GetTempName
Decode and Encode UTF-8
ASP GetFile
ASP FolderExists
ASP FileExists
ASP OpenTextFile
ASP FilesystemObject
ASP CreateFolder
ASP CreateTextFile
Javascript Get Selected Text


© Copyright codetoad.com 2001-2010