public JsonResult GetFormField() { string id = Request.Form[NamingCenter.PARAM_PARENT_ID]; string pageId = Request.Form[NamingCenter.PARAM_PAGE_ID]; var component = PageBuilder.BuildPage(pageId).FindControl(id); if (component is Form) { var form = component as Form; if (form.FormService == null) { throw new FoxOneException("Need_DataSource", form.Id); } if (form.FormService is EntityDataSource) { var tempForm = ComponentHelper.GetFormComponent((form.FormService as EntityDataSource).EntityType); foreach (var field in tempForm.Fields) { field.PageId = pageId; field.ParentId = id; field.TargetId = "Fields"; ComponentHelper.RecSave(field); } return(Json(true)); } if (form.FormService is DataTableDataSource) { var tableName = (form.FormService as DataTableDataSource).TableName; var table = FoxOne.Data.Mapping.TableMapper.Tables[Dao.Get().ConnectionString].FirstOrDefault(o => o.Name.Equals(tableName, StringComparison.OrdinalIgnoreCase)); foreach (var f in table.Columns.Where(o => o.Editable).OrderBy(o => o.Rank)) { var field = ControlDefaultSetting.GetFormControl(f); field.PageId = pageId; field.ParentId = id; field.TargetId = "Fields"; ComponentHelper.RecSave(field); } return(Json(true)); } } throw new FoxOneException("Only_Suppost_Form_Ctrl"); }
private void AddForm() { Form form = null; if (Type != null) { form = ComponentHelper.GetFormComponent(Type); } else { if (Table == null) { return; } form = new Form() { Rank = 1, Id = "{0}Form".FormatTo(EditPageName) }; form.PostUrl = "/Entity/Edit"; form.FormMode = FormMode.Insert; form.AppendQueryString = true; form.FormService = new CRUDDataSource() { CRUDName = CRUDName, Id = form.Id + "Ds" }; foreach (var field in Table.Columns.Where(o => o.Editable).OrderBy(o => o.Rank)) { var f = ControlDefaultSetting.GetFormControl(field); form.Fields.Add(f); } foreach (var btn in ControlDefaultSetting.GetDefaultFormButton()) { form.Buttons.Add(btn); } } form.PageId = EditPageName; form.ParentId = EditPageName; form.TargetId = "Right"; ComponentHelper.RecSave(form); }
public ActionResult ComponentEditor() { var model = new FormModel(); string ctrlId = Request.QueryString[NamingCenter.PARAM_CTRL_ID]; string typeName = Request.QueryString[NamingCenter.PARAM_TYPE_NAME]; string pageId = Request.QueryString[NamingCenter.PARAM_PAGE_ID]; string parentId = Request.QueryString[NamingCenter.PARAM_PARENT_ID]; string targetId = Request.QueryString[NamingCenter.PARAM_TARGET_ID]; Type type = null; IControl instance = null; ComponentEntity component = null; if (ctrlId.IsNullOrEmpty()) { if (!pageId.IsNullOrEmpty() && !parentId.IsNullOrEmpty() && !targetId.IsNullOrEmpty() && Request.QueryString[NamingCenter.PARAM_FORM_VIEW_MODE] != "Insert") { component = DBContext <ComponentEntity> .Instance.FirstOrDefault(o => o.PageId.Equals(pageId, StringComparison.OrdinalIgnoreCase) && o.TargetId.Equals(targetId, StringComparison.OrdinalIgnoreCase) && o.ParentId.Equals(parentId, StringComparison.OrdinalIgnoreCase)); } } else { component = DBContext <ComponentEntity> .Instance.FirstOrDefault(o => o.PageId.Equals(pageId, StringComparison.OrdinalIgnoreCase) && o.Id.Equals(ctrlId, StringComparison.OrdinalIgnoreCase)); } if (component != null) { ctrlId = component.Id; pageId = component.PageId; parentId = component.ParentId; if (typeName.IsNullOrEmpty() || typeName.Equals(component.Type)) { type = TypeHelper.GetType(component.Type); if (!component.JsonContent.IsNullOrEmpty()) { JavaScriptSerializer serializer = new JavaScriptSerializer(); serializer.RegisterConverters(new[] { new FoxOne.Business.ComponentConverter() }); instance = serializer.Deserialize(component.JsonContent, type) as IControl; if (instance == null) { throw new FoxOneException("Ctrl_Not_Valid"); } instance.Id = component.Id; } typeName = type.FullName; model.Tab = ComponentHelper.GetTabComponent(instance, ctrlId, pageId); } } if (typeName.IsNullOrEmpty()) { throw new FoxOneException("Parameter_Not_Found", NamingCenter.PARAM_TYPE_NAME + " Or " + NamingCenter.PARAM_CTRL_ID); } if (type == null) { type = TypeHelper.GetType(typeName); } if (parentId.IsNullOrEmpty()) { parentId = pageId; } model.EntityName = type.FullName; model.Form = ComponentHelper.GetFormComponent(type); model.Form.AutoHeight = false; model.Form.PostUrl = HttpHelper.BuildUrl(ctrlEdit, Request); if (instance == null) { model.Form.FormMode = FormMode.Insert; instance = Activator.CreateInstance(type) as IControl; if (ctrlId.IsNotNullOrEmpty()) { instance.Id = ctrlId; var fbCtrl = instance as FormControlBase; if (fbCtrl != null) { fbCtrl.Rank = Request.QueryString["Rank"].ConvertTo <int>(); fbCtrl.Label = Request.QueryString["Label"]; } model.Form.FormMode = FormMode.Edit; } else { if (!parentId.IsNullOrEmpty()) { instance.Id = parentId + type.Name; } else { if (!pageId.IsNullOrEmpty()) { instance.Id = pageId + type.Name; } } } } else { model.Form.FormMode = FormMode.Edit; } //如果是编辑控件,则控件ID不允许更改。 //model.Form.Fields.FirstOrDefault(o => o.Id.Equals("Id", StringComparison.OrdinalIgnoreCase)).Enable = !(model.Form.FormMode == FormMode.Edit); model.Form.Data = instance; if (model.Tab != null) { if (model.Tab.TabItems.Count == 1) { model.Tab = null; } else { model.Tab.TabItems[0].Content.Add(model.Form); } } return(View(model)); }