| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Web.UI.WebControls;
- using System.Collections;
- namespace System.Web.Script.Serialization.CS
- {
- public class ListItemCollectionConverter : JavaScriptConverter
- {
- public override IEnumerable<Type> SupportedTypes
- {
- //Define the ListItemCollection as a supported type.
- get { return new ReadOnlyCollection<Type>(new List<Type>(new Type[] { typeof(ListItemCollection) })); }
- }
- public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
- {
- ListItemCollection listType = obj as ListItemCollection;
- if (listType != null)
- {
- // Create the representation.
- Dictionary<string, object> result = new Dictionary<string, object>();
- ArrayList itemsList = new ArrayList();
- foreach (ListItem item in listType)
- {
- //Add each entry to the dictionary.
- Dictionary<string, object> listDict = new Dictionary<string, object>();
- listDict.Add("Value", item.Value);
- listDict.Add("Text", item.Text);
- itemsList.Add(listDict);
- }
- result["List"] = itemsList;
- return result;
- }
- return new Dictionary<string, object>();
- }
- public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
- {
- if (dictionary == null)
- throw new ArgumentNullException("dictionary");
- if (type == typeof(ListItemCollection))
- {
- // Create the instance to deserialize into.
- ListItemCollection list = new ListItemCollection();
- // Deserialize the ListItemCollection's items.
- ArrayList itemsList = (ArrayList)dictionary["List"];
- for (int i=0; i<itemsList.Count; i++)
- list.Add(serializer.ConvertToType<ListItem>(itemsList[i]));
- return list;
- }
- return null;
- }
- }
- }
|