Beispiel #1
0
 private static JToken GetDefaultValue(object obj, PropertyInfo property)
 {
     object value = null;
     try
     {
         value = property.GetValue(obj, null);
     }
     catch { }
     if (value == null)
     {
         return new JValue("");
     }
     else if (property.PropertyType == typeof(int))
     {
         return new JValue((int)value);
     }
     else if (property.PropertyType == typeof(bool))
     {
         return new JValue(value.ToString().ToLower());
     }
     else if (property.PropertyType == typeof(System.Drawing.Font))
     {
         var font = (System.Drawing.Font)value;
         var fontValue = new List<string>();
         fontValue.Add(font.OriginalFontName);
         fontValue.Add(string.Format("{0}pt", font.Size));
         if (font.Style != System.Drawing.FontStyle.Regular)
         {
             fontValue.Add(font.Style.ToString());
         }
         return new JValue(string.Join(",", fontValue));
     }
     else if (typeof(System.Collections.IList).IsAssignableFrom(property.PropertyType))
     {
         var items = new JArray();
         if (property.PropertyType.IsGenericType && property.PropertyType.GetGenericArguments().Length == 1)
         {
             var itemType = property.PropertyType.GetGenericArguments()[0];
             var toolItems = new ArrayList();
             if (itemType == typeof(JQClientTools.JQToolItem))
             {
                 //增加grid的默认toolitems
                 toolItems.AddRange(new JQClientTools.JQToolItem[] { JQClientTools.JQToolItem.InsertItem, JQClientTools.JQToolItem.UpdateItem, JQClientTools.JQToolItem.DeleteItem
                     , JQClientTools.JQToolItem.ApplyItem, JQClientTools.JQToolItem.CancelItem, JQClientTools.JQToolItem.QueryItem });
             }
             else if (itemType == typeof(JQMobileTools.JQToolItem))
             {
                 //增加grid的默认toolitems
                 toolItems.AddRange(new JQMobileTools.JQToolItem[] { JQMobileTools.JQToolItem.InsertItem, JQMobileTools.JQToolItem.PreviousPageItem,  JQMobileTools.JQToolItem.NextPageItem
                     , JQMobileTools.JQToolItem.QueryItem, JQMobileTools.JQToolItem.RefreshItem, JQMobileTools.JQToolItem.BackItem });
             }
             foreach (var toolItem in toolItems)
             {
                 var item = new JObject();
                 var itemProperties = toolItem.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
                 foreach (var itemProperty in itemProperties)
                 {
                     if (CanEdit(itemProperty))
                     {
                         item[itemProperty.Name] = GetDefaultValue(toolItem, itemProperty);
                     }
                 }
                 items.Add(item);
             }
         }
         else if (typeof(System.Collections.IList).IsAssignableFrom(property.PropertyType))
         {
             CodeParser helper = new CodeParser();
             foreach (var collectionItem in (IEnumerable)value)
             {
                 items.Add(helper.GetItemProperties(collectionItem));
             }
         }
         return items;
     }
     else
     {
         return new JValue(value.ToString());
     }
 }