public object CreateInputWidget(Sandwych.Layout.Models.Input input) { var metaField = this.metaFields.Where(i => (string)i["name"] == input.Field).Single(); var fieldType = (string)metaField["type"]; var t = fieldTypeMapping[fieldType]; var widget = (IFieldWidget)Activator.CreateInstance(t, metaField); this.createdFieldWidgets.Add(input.Field, widget); return(widget); }
private object CreateQueryForm(Dictionary <string, object>[] fields, IEnumerable <XElement> viewFields, string where) { //生成基本查询条件表单 var columnsPerRow = 6;// (int)Math.Round(this.Width / 150.00) * 2; if (columnsPerRow % 2 != 0) { columnsPerRow--; } var basicQueryForm = new Sandwych.Layout.Models.Form() { ColumnCount = columnsPerRow, }; var basicFields = viewFields.Where(ele => { var attr = ele.Attribute("where"); return(attr != null && attr.Value == where); }); var basicQueryFormChildren = new List <Sandwych.Layout.Models.Placable>(); var factory = new QueryFieldControlFactory(fields); var createdFieldControls = new Dictionary <string, IQueryField>(); foreach (var fieldLayout in basicFields) { var fieldName = fieldLayout.Attribute("name").Value; var metaField = fields.Single(i => (string)i["name"] == fieldName); var label = new Sandwych.Layout.Models.Label() { Text = (string)metaField["label"], }; basicQueryFormChildren.Add(label); var field = new Sandwych.Layout.Models.Input() { Field = (string)metaField["name"], }; basicQueryFormChildren.Add(field); } basicQueryForm.ChildElements = basicQueryFormChildren.ToArray(); var layoutEngine = new Sandwych.Layout.LayoutEngine(factory); var basicQueryGrid = layoutEngine.BuildLayout(basicQueryForm); foreach (var p in factory.CreatedQueryFields) { this.createdQueryFields.Add(p.Key, p.Value); } return(basicQueryGrid); }
public object CreateInputWidget(Sandwych.Layout.Models.Input field) { var metaField = this.metaFields.Where(i => (string)i["name"] == field.Field).Single(); var fieldType = (string)metaField["type"]; var fieldName = (string)metaField["name"]; //TODO F**K ME IQueryField queryField = null; if (fieldTypeControlMapping.ContainsKey(fieldType)) { var t = fieldTypeControlMapping[fieldType]; queryField = (IQueryField)Activator.CreateInstance(t, metaField); } else { queryField = new QueryFieldControls.StringQueryFieldControl(metaField); } this.createdQueryFields.Add(fieldName, queryField); return(queryField); }