protected override List <object> GetValuesForRow(Product item) { var values = base.GetValuesForRow(item); var vendors = SiteObjectService.GetSingleRelation <Vendor>(item); var entityLinks = new ListVM.EntityLinkList(); var metaData = MetaDataProvider.Get(typeof(Vendor)); foreach (var vendor in vendors) { entityLinks.Add(new ListVM.EntityLink(vendor, metaData, Url)); } values.Add(entityLinks); return(values); }
public void AddColumns <T>(AjaxGridVM model, params Expression <Func <T, object> >[] selectors) { var metaData = MetaDataProvider.Get(typeof(T)).GetProperties(); var columns = new Dictionary <string, AjaxGridVM.Column>(); foreach (var selector in selectors) { var info = ExpressionUtils.GetPropertyInfo(selector); var meta = metaData.First(x => x.Info == info); columns.Add(meta.DisplayName(), new AjaxGridVM.Column(info.Name)); } model.ColumnTitles.AddRange(columns.Select(x => x.Key)); model.Columns.AddRange(columns.Select(x => x.Value)); }
public ActionResult SiteObjectEdit(string typeName, object id) { var entityType = typeof(SpecialistDataContext).Assembly.GetTypes() .Where(t => t.FullName == typeName).First(); var type = LinqToSqlUtils.GetTableName(entityType); var siteObject = SiteObjectService .GetBy(type, LinqToSqlUtils.CorrectPKType(id, entityType)); if (siteObject == null) { return(Redirect(Request.UrlReferrer.AbsoluteUri)); } return(View(ViewNames.EditRelationList, new EditVM(siteObject, MetaDataProvider.Get(typeof(SiteObject))))); }
protected void UpdateEntity(object obj, NameValueCollection formCollection) { var metaData = MetaDataProvider.Get(obj.GetType()); if (metaData == null) { return; } foreach (var property in metaData.GetProperties()) { try { if (property.Control() == Controls.PropertyGrid) { var collectionForComplexProperty = new NameValueCollection(); foreach (var tempKey in formCollection.AllKeys) { var prefix = property.Name + "."; if (tempKey.StartsWith(prefix)) { collectionForComplexProperty.Add( tempKey.Remove(0, prefix.Length), formCollection[tempKey]); } } UpdateEntity(obj.GetValue(property.Name), collectionForComplexProperty); continue; } object value = null; /* if(property.IsManyToMany) * { * var m2mEntities = property.Info.GetValue(obj); * m2mEntities.InvokeMethod("Clear"); * var idList = formCollection[property.Info.Name].Split(','); * var setType = property.Type.GetGenericArguments().First(); * var idPropertyName = LinqToSqlUtil.GetIdPropertyName(typeof(T)); * var entityID = LinqToSqlUtil.GetId(obj); * var m2MPropertyInfo = * LinqToSqlUtil.GetOtherM2MPropertyInfo(property.Info); * foreach (var id in idList) * { * var correctId = LinqToSqlUtil.CorrectIdType(id, * property.ForeignType); * var m2mEntity = setType.Create(); * m2MPropertyInfo.SetValue(m2mEntity, correctId); * m2mEntity.SetValue(entityID, idPropertyName); * * m2mEntities.InvokeMethod("Add", m2mEntity); * * } * continue; * }*/ var key = property.Info.Name; var valueType = obj.GetType().GetProperty(key).PropertyType; if (valueType == typeof(bool)) { bool b; if (bool.TryParse(formCollection[key], out b)) { value = b; } } else if (formCollection[key] == string.Empty && property.Control() == Controls.Select) { } else if (formCollection[key] == null) { continue; } else { value = ObjectUtils.SmartConvert(formCollection[key], valueType); } obj.SetValue(value, key); } catch (Exception ex) { ModelState.AddModelError(property.Name, ex.Message); } } }