private void InitEdit() { var memType = MemberInfo.MemberTypeInfo; if (memType.Type == typeof(SecuritySystemUser)) { memType = XafTypesInfo.Instance.FindTypeInfo(SecuritySystem.UserType); } CollectionOS = ObjectSpace.CreateNestedObjectSpace(); Helper = new LookupEditorHelper(Application, CollectionOS, memType, Model); var bootstrapLookup = MemberInfo.FindAttribute <BootstrapLookupAttribute>(); Boolean IsAuto = Helper.EditorMode == LookupEditorMode.Auto; if (Helper.EditorMode == LookupEditorMode.Auto) { Helper.EditorMode = LookupEditorMode.AllItemsWithSearch; } IsSelector = Helper.EditorMode == LookupEditorMode.AllItems; if (bootstrapLookup != null) { switch (bootstrapLookup.Kind) { case BootstapLookupKind.Auto: IsSelector = false; Helper.EditorMode = LookupEditorMode.Auto; break; case BootstapLookupKind.DropDown: IsSelector = false; Helper.EditorMode = LookupEditorMode.AllItemsWithSearch; break; case BootstapLookupKind.Selector: IsSelector = true; Helper.EditorMode = LookupEditorMode.AllItemsWithSearch; break; } } if (!IsSelector) { cs = Helper.CreateCollectionSource(Helper.ObjectSpace.GetObject(CurrentObject)); if (IsAuto || (Helper.EditorMode == LookupEditorMode.AllItemsWithSearch && bootstrapLookup == null)) { IsSelector = cs != null && cs.List != null && (cs.List.Count == 0 || cs.List.Count > 20 || typeof(ITreeNode).IsAssignableFrom(MemberInfo.MemberType)); } } if (cs != null && cs.List != null) { foreach (var item in NewObjects) { cs.List.Add(cs.ObjectSpace.GetObject(item)); } } String displayFormat = String.Concat(DisplayFormat); if (displayFormat == "") { try { ObjectCaptionFormatAttribute aAttr = (MemberInfo.MemberTypeInfo.FindAttribute <ObjectCaptionFormatAttribute>()); if (aAttr != null) { displayFormat = aAttr.FormatString; } else { var lookupProperty = String.Concat(Model.GetValue <String>("LookupProperty")); if (lookupProperty != "") { displayFormat = String.Format("{{0:{0}}}", lookupProperty); } } } catch { } } if (displayFormat == "") { displayFormat = "{0}"; } var App = (WebApplication.Instance as XafApplication); if (IsSelector) { DataSelector = new XafBootstrapDataSelectorEdit(this, Application, ObjectSpace, Helper); DataSelector.Caption = Model.Caption; DataSelector.PropertyName = PropertyName; DataSelector.OnClickScript = GetImmediatePostDataScript(); DataSelector.ListView = (IModelListView)App.Model.Views[App.FindLookupListViewId(memType.Type)]; DataSelector.DisplayFormat = displayFormat; DataSelector.OnCallback += DataSelector_OnCallback; DataSelector.OnOk += DataSelector_OnOk; DataSelector.OnCancel += DataSelector_OnCancel; } else { DropDown = new XafBootstrapDropdownEdit(); DropDown.OnClickScript = GetImmediatePostDataScript(); if (cs != null && cs.List != null) { var list = cs.List.OfType <object>().ToList(); var modelListView = (IModelListView)App.Model.Views[App.FindLookupListViewId(memType.Type)]; if (modelListView != null && modelListView.Sorting.Count > 0) { DropDown.SortByText = false; list = Helpers.SortListByViewSorting(modelListView, list).ToList(); } foreach (var obj in list) { AddObjToDropDown(obj); } } } CreateButtons(); }
private void InitEdit() { var Helper = new LookupEditorHelper(Application, ObjectSpace.CreateNestedObjectSpace(), MemberInfo.MemberTypeInfo, Model); IsSelector = Helper.EditorMode == LookupEditorMode.Search; CollectionSourceBase cs = null; if (!IsSelector) { cs = Helper.CreateCollectionSource(Helper.ObjectSpace.GetObject(CurrentObject)); if (Helper.EditorMode == LookupEditorMode.Auto || Helper.EditorMode == LookupEditorMode.AllItemsWithSearch) { IsSelector = cs != null && cs.List.Count > 20; } } String displayFormat = String.Concat(DisplayFormat); if (displayFormat == "") { try { ObjectCaptionFormatAttribute aAttr = (MemberInfo.MemberTypeInfo.FindAttribute <ObjectCaptionFormatAttribute>()); if (aAttr != null) { displayFormat = aAttr.FormatString; } else { var lookupProperty = String.Concat(Model.GetValue <String>("LookupProperty")); if (lookupProperty != "") { displayFormat = String.Format("{{0:{0}}}", lookupProperty); } } } catch { } } if (displayFormat == "") { displayFormat = "{0}"; } var App = (WebApplication.Instance as XafApplication); if (IsSelector) { DataSelector = new XafBootstrapDataSelectorEdit(this, Application, ObjectSpace, Helper); DataSelector.Caption = Model.Caption; DataSelector.PropertyName = PropertyName; DataSelector.OnClickScript = GetImmediatePostDataScript(); DataSelector.ListView = (IModelListView)App.Model.Views[App.FindLookupListViewId(MemberInfo.MemberType)]; DataSelector.DisplayFormat = displayFormat; } else { DropDown = new XafBootstrapDropdownEdit(); DropDown.OnClickScript = GetImmediatePostDataScript(); var listView = (IModelListView)App.Model.Views[App.FindLookupListViewId(MemberInfo.MemberType)]; if (cs != null) { foreach (var obj in cs.List) { var item = DropDown.Items.Add(); var cols = listView.Columns.Where(f => f.Index == null || f.Index > -1).OrderBy(f => f.Index); if (cols.Count() > 1) { var builder = new List <String>(); foreach (var col in cols) { builder.Add(String.Format(new ObjectFormatter(), "{0:" + col.GetValue <String>("FieldName") + "}", obj)); } builder = builder.Where(f => String.Concat(f) != "").ToList(); item.Text = builder.First(); item.Hint = String.Join("<br>", builder.Skip(1).Take(builder.Count - 1)); } else { item.Text = String.Format(new ObjectFormatter(), String.Concat(displayFormat) == "" ? "{0}" : displayFormat, obj); } item.Value = ObjectSpace.GetObject(obj); } } } }