public override void UpdateNode(IModelListView view) { try { this.View = view; this.DetailViewLayout = this.View.DetailView.Layout[0] as IModelLayoutGroup; this.DetailView = this.View.DetailView; Debug.WriteLine(view.Id); } catch (Exception ex) { throw ex; } if (this.DetailViewLayout == null) { throw new Exception("没有找到DetailViewLayout!"); } LayoutListView(); LayoutDetailView(); }
public static List <IModelMember> GetImportableProperties(this IModelDetailView detailView) { var result = new List <IModelMember>(); GetImportableProperties(detailView.Layout, result); return(result); }
public static IEnumerable <IModelPropertyEditor> GetModelPropertyEditors(this IModelDetailView modelDetailView) { var modelPropertyEditors = modelDetailView.Items.OfType <IModelPropertyEditor>(); foreach (var modelPropertyEditor in modelPropertyEditors) { if (modelPropertyEditor.ModelMember.MemberInfo.IsList) { if (modelPropertyEditor.View is IModelListView modelListView) { if (modelListView.MasterDetailMode == MasterDetailMode.ListViewAndDetailView) { foreach (var propertyEditor in modelListView.MasterDetailView.GetModelPropertyEditors()) { yield return(propertyEditor); } } else { yield return(modelPropertyEditor); } } } else { yield return(modelPropertyEditor); } } }
private void GenerateTabbedLayout(IModelDetailView detailViewInfo) { if (detailViewInfo.Layout["Main"] != null) { detailViewInfo.Layout["Main"].Remove(); } IModelLayoutGroup main = detailViewInfo.Layout.AddNode <IModelLayoutGroup>(ModelDetailViewLayoutNodesGenerator.MainLayoutGroupName); IModelLayoutGroup generalNode = null; IModelTabbedGroup tabNode = null; IModelLayoutGroup footerNode = null; foreach (IModelViewItem modelViewItem in detailViewInfo.Items) { IModelPropertyEditor editor = modelViewItem as IModelPropertyEditor; if (editor != null) { if (FindModelDefaultAttribute(editor.ModelMember.MemberInfo, CustomDetailViewItemsGenarator.VisiblePropertiesAttribute) != null) { editor.PropertyEditorType = typeof(DetailPropertyEditor);// editor.ModelMember.EditorsInfo[EditorAliases.DetailPropertyEditor].DefaultEditor; } editor.ImmediatePostData = true; IModelMemberExtender item = (IModelMemberExtender)editor; string tabPageName = item.TabPageName; if (string.IsNullOrEmpty(tabPageName)) { if (item.Footer) { if (footerNode == null) { footerNode = main.AddNode <IModelLayoutGroup>(CustomDetailViewItemsGenarator.FooterId); footerNode.Index = 5; } AddLayoutItemNode(footerNode, editor); } else { if (generalNode == null) { generalNode = main.AddNode <IModelLayoutGroup>(CustomDetailViewItemsGenarator.GeneralId); generalNode.Index = editor.Index.HasValue ? editor.Index : 0; } AddLayoutItemNode(generalNode, editor); } } else { if (tabNode == null) { tabNode = main.AddNode <IModelTabbedGroup>(CustomDetailViewItemsGenarator.MainTabId); tabNode.Index = editor.Index.HasValue ? editor.Index : 1; } IModelLayoutGroup group = AddEditorToTabbedGroup(tabNode, tabPageName, editor); if (editor.ModelMember.Index >= 0) { group.Index = editor.ModelMember.Index; } } } } }
DetailView CreateDetailView(object groupRowValue, IModelDetailView modelDetailView) { var objectSpace = Application.CreateObjectSpace(); groupRowValue = objectSpace.GetObject(groupRowValue); return(Application.CreateDetailView(objectSpace, modelDetailView, false, groupRowValue)); }
private void GenerateNestedDetailViewLayout(IModelDetailView modelDetailView) { List <IModelViewItem> items = new List <IModelViewItem>(); foreach (IModelViewItem item in modelDetailView.Items) { items.Add(item); } foreach (IModelViewItem itemR in items) { itemR.Remove(); } int index = 0; foreach (string propertyName in CustomLayoutHelper.Instance.GetViewVisibleProperties(modelDetailView.Id)) { IModelPropertyEditor editor = modelDetailView.Items.AddNode <IModelPropertyEditor>(propertyName); editor.ImmediatePostData = true; editor.Index = index++; editor.PropertyName = propertyName; if (string.IsNullOrEmpty(((IModelViewItem)editor).Caption)) { ((IModelViewItem)editor).Caption = CaptionHelper.ConvertCompoundName(propertyName); } } }
protected virtual object GetObjectCore(IModelDetailView modelView, object objectKey, IObjectSpace objectSpace) { Type type = modelView.ModelClass.TypeInfo.Type; object obj; if (XafTypesInfo.CastTypeToTypeInfo(type).IsPersistent) { if (objectKey != null && !(objectKey is CriteriaOperator)) { obj = objectSpace.GetObjectByKey(type, objectKey); } else { obj = objectSpace.FindObject(type, (CriteriaOperator)objectKey) ?? objectSpace.CreateObject(type); if (!(objectSpace.IsNewObject(obj))) { _application.ViewShown += ApplicationOnViewShown; } } } else { obj = (type.GetConstructor(new[] { typeof(Session) }) != null) ? objectSpace.CreateObject(type) : type.CreateInstance(); } return(obj); }
private void GenerateCustomLayout(IModelDetailView modelDetailView) { ITypeInfo iTypeInfo = modelDetailView.ModelClass.TypeInfo; HashSet <string> actionContainerNames = new HashSet <string>(); foreach (IModelViewItem item in modelDetailView.Items) { IModelPropertyEditor editorInfo = (IModelPropertyEditor)item; if (CustomLayoutHelper.FindModelDefaultAttribute(editorInfo.ModelMember.MemberInfo, VisiblePropertiesAttribute) != null) { editorInfo.PropertyEditorType = typeof(DetailPropertyEditor); } string visiblePropertiesAttributeValue = ((IModelMemberExtender)item).VisibleProperties; if (editorInfo.PropertyEditorType == typeof(DetailPropertyEditor) && !string.IsNullOrEmpty(visiblePropertiesAttributeValue)) { string nestedViewId = iTypeInfo.Name + "_" + editorInfo.PropertyName + "_DetailView"; editorInfo.View = modelDetailView.Application.Views[nestedViewId]; } ModelDefaultAttribute actionsContainerAttribute = CustomLayoutHelper.FindModelDefaultAttribute(editorInfo.ModelMember.MemberInfo, ActionsContainerAttribute); if (actionsContainerAttribute != null) { actionContainerNames.Add(actionsContainerAttribute.PropertyValue); } } foreach (string name in actionContainerNames) { IModelActionContainerViewItem modelActionContainerViewItem = modelDetailView.Items.AddNode <IModelActionContainerViewItem>(name); } }
public override void UpdateNode(ModelNode node) { if (node.Parent is IModelDetailView && ((IModelDetailView)(node.Parent)).ModelClass.TypeInfo.Implements <ICustomLayoutInfo>()) { IModelDetailView detailViewInfo = ((IModelDetailView)node.Parent); GenerateTabbedLayout(detailViewInfo); } }
private void UpdateDetailViewLayout(IModelDetailView modelDetailView, DetailViewLayoutBuilderAttribute attribute, IModelViewLayout layoutNode) { //layoutAttribute.Options(modelDetailView); layoutNode.ClearNodes(); BuildLayout(attribute.Layout, layoutNode, modelDetailView); }
internal IModelMemberViewItem GetParameterViewItem(string parameterName, Type parameterType) { string uniqueParameterName = "Reports_" + parameterName.Replace('.', '_') + "_" + parameterType.Name; UpdatableParameter xafParameter = new UpdatableParameter(uniqueParameterName, parameterType); ParameterList parameterList = new ParameterList(); parameterList.Add(xafParameter); ParametersObject.CreateBoundObject(parameterList); IModelDetailView detailViewModel = TempDetailViewHelper.CreateTempDetailViewModel(Application.Model, typeof(ParametersObject)); return((IModelMemberViewItem)detailViewModel.Items[uniqueParameterName]); }
object GetObjectKey(ViewShortcut shortcut, IModelDetailView modelDetailView, IObjectSpace objectSpace) { var type = modelDetailView.ModelClass.TypeInfo.Type; var objectKeyString = shortcut.ObjectKey; if (shortcut.ContainsKey("Criteria")) objectKeyString = shortcut["Criteria"]; if (objectKeyString.StartsWith("@")) { var modelReadOnlyParameter = ((IModelApplicationReadonlyParameters)modelDetailView.Application).ReadOnlyParameters[objectKeyString.Substring(1)]; var readOnlyParameter = (ReadOnlyParameter) modelReadOnlyParameter.Type.CreateInstance(); objectKeyString = readOnlyParameter.CurrentValue.ToString(); } return string.IsNullOrEmpty(objectKeyString) ? null : GetObjectKeyCore(objectSpace, type, objectKeyString); }
public override void UpdateNode(ModelNode node) { IModelDetailViewLayout layout = node as IModelDetailViewLayout; IModelDetailView detailView = (IModelDetailView)layout.Parent; if (!XafTypesInfo.Instance.FindTypeInfo(typeof(MyBase)).IsAssignableFrom(detailView.ModelClass.TypeInfo)) { return; } foreach (IModelDetailViewLayoutElement element in layout) { UpdateLayoutItems(element, detailView.Items, XafTypesInfo.Instance.FindTypeInfo(typeof(MyBase)).FindMember("Description")); } }
public override void UpdateNode(ModelNode node) { IModelDetailView detailView = node.Parent as IModelDetailView; if (detailView != null) { if (detailView.ModelClass.TypeInfo.Implements <ICustomLayoutInfo>()) { GenerateCustomLayout(detailView); } if (CustomLayoutHelper.Instance.HasVisibleProperties(detailView.ModelClass.Name)) { GenerateNestedDetailViewLayout(detailView); } } }
private void GenerateNestedDetailViews(IModelViews views, IModelClass modelClass) { string visibleProperties; foreach (IModelMember modelMember in modelClass.AllMembers) { visibleProperties = ((IModelMemberExtender)modelMember).VisibleProperties; if (visibleProperties != null) { string nestedViewId = modelClass.TypeInfo.Name + "_" + modelMember.MemberInfo.Name + "_DetailView"; IModelDetailView detailViewInfo = views.AddNode <IModelDetailView>(nestedViewId); detailViewInfo.ModelClass = views.Application.BOModel[modelMember.MemberInfo.MemberType.FullName]; CustomLayoutHelper.Instance.RegisterViewVisibleProperties(detailViewInfo.Id, visibleProperties); } } }
protected virtual object GetObjectCore(IModelDetailView modelView, object objectKey, IObjectSpace objectSpace) { Type type = modelView.ModelClass.TypeInfo.Type; object obj; if (XafTypesInfo.CastTypeToTypeInfo(type).IsPersistent) { if (objectKey != null && !(objectKey is CriteriaOperator)) obj = objectSpace.GetObjectByKey(type, objectKey); else { obj = objectSpace.FindObject(type, (CriteriaOperator)objectKey) ?? objectSpace.CreateObject(type); if (!(objectSpace.IsNewObject(obj))) ((IXafApplication)_application).AfterViewShown += OnAfterViewShown; } } else { obj = (type.GetConstructor(new[] { typeof(Session) }) != null) ? objectSpace.CreateObject(type) : Activator.CreateInstance(type); } return obj; }
private void ListViewFilterPanelController_Activated(object sender, EventArgs e) { // Скрываем саму кнопку ListViewClearFilter.Enabled[DO_NOT_ENABLED] = false; ListViewApplyFilter.Enabled[DO_NOT_ENABLED] = false; frame = Frame; view = View; listView = view as DevExpress.ExpressApp.ListView; if (listView == null) { return; } objectTypeInfo = listView.CollectionSource.ObjectTypeInfo; typeObjectOfListView = objectTypeInfo.Type; // Критерий из модели для самого ListView listViewCriteria = listView.Model.Criteria; View.ControlsCreated += new EventHandler(View_ControlsCreated); FilteringCriterionListAction.Items.Clear(); foreach (IModelDetailView node in View.Model.Application.Views.GetNodes <IModelDetailView>()) { if (node.ModelClass.TypeInfo.Type.Name.StartsWith(typeObjectOfListView.Name + "Filter")) { ChoiceActionItem current = new ChoiceActionItem(node.Id, node.Caption, node); FilteringCriterionListAction.Items.Add(current); } } IModelDetailView imdvFullTextSearch = Application.FindModelView(Application.FindDetailViewId(typeof(FilteringCriterion))) as IModelDetailView; string FullTextSearchCaption = imdvFullTextSearch.Caption; FilteringCriterionListAction.Items.Add(new ChoiceActionItem("CriteriaBuilder", FullTextSearchCaption, null)); FilteringCriterionListAction.SelectedIndex = 0; if (standardFullTextFilterAction != null) { standardFullTextFilterAction.Active["IsPersistentType"] = true; // string searchText = ""; // if (standardFullTextFilterAction.Value != null) searchText = standardFullTextFilterAction.Value.ToString(); // InitVariablesForLikeSearchPathListAttribute(searchText, out criteriaForLikeSearchPathListAttribute, out propertiesForLikeSearchPathListAttribute); } }
object GetObjectKey(ViewShortcut shortcut, IModelDetailView modelDetailView, IObjectSpace objectSpace) { var type = modelDetailView.ModelClass.TypeInfo.Type; var objectKeyString = shortcut.ObjectKey; if (shortcut.ContainsKey("Criteria")) { objectKeyString = shortcut["Criteria"]; } if (objectKeyString.StartsWith("@")) { var modelReadOnlyParameter = ((IModelApplicationReadonlyParameters)modelDetailView.Application).ReadOnlyParameters[objectKeyString.Substring(1)]; var readOnlyParameter = (ReadOnlyParameter)modelReadOnlyParameter.Type.CreateInstance(); objectKeyString = readOnlyParameter.CurrentValue.ToString(); } return(string.IsNullOrEmpty(objectKeyString) ? null : GetObjectKeyCore(objectSpace, type, objectKeyString)); }
public override void UpdateNode(ModelNode node) { IModelViews views = (IModelViews)node; foreach (IModelView modelView in views) { if ((modelView is IModelObjectView) && CustomLayoutHelper.Instance.HasVisibleProperties(((IModelObjectView)modelView).ModelClass.Name)) { modelView.Remove(); } IModelDetailView modelDetailView = modelView as IModelDetailView; if ((modelDetailView != null) && modelDetailView.ModelClass.TypeInfo.Implements <ICustomLayoutInfo>()) { GenerateNestedDetailViews(views, modelDetailView.ModelClass); } } }
public void Proccess(CustomProcessShortcutEventArgs shortcutEventArgs) { if (shortcutEventArgs.Handled) { return; } var shortcut = shortcutEventArgs.Shortcut; IModelDetailView modelDetailView = GetModelDetailView(shortcut); if ((modelDetailView != null && IsEnable(modelDetailView))) { if (CanCreate(modelDetailView.ModelClass.TypeInfo)) { shortcutEventArgs.Handled = true; var objectSpace = _application.CreateObjectSpace(); object obj = GetObject(shortcut, modelDetailView, objectSpace); _detailView = _application.CreateDetailView(objectSpace, modelDetailView, true, obj); shortcutEventArgs.View = _detailView; } } }
void HotelInfomationNavigationDetailViewWC_CustomShowNavigationItem(object sender, CustomShowNavigationItemEventArgs e) { IModelDetailView model = ((IModelNavigationItem)e.ActionArguments.SelectedChoiceActionItem.Model).View as IModelDetailView; if (model != null) { if (model.Id == "HotelInfomation_DetailView") { IObjectSpace objectSpace = Application.CreateObjectSpace(); HotelInfomation hotelInfomation = objectSpace.FindObject <HotelInfomation>(null); if (hotelInfomation == null) { hotelInfomation = objectSpace.CreateObject <HotelInfomation>(); try { objectSpace.CommitChanges(); } catch { } } DetailView detailView = Application.CreateDetailView(objectSpace, model, true, hotelInfomation); detailView.ViewEditMode = ViewEditMode.Edit; e.ActionArguments.ShowViewParameters.CreatedView = detailView; e.ActionArguments.ShowViewParameters.TargetWindow = TargetWindow.Current; e.Handled = true; } } }
protected IModelLayoutGroup HGroup <T>(IModelDetailView view, IModelLayoutGroup layout, int index, Expression <Func <T, object> >[] property) { try { //layout.GetNodes<IModelLayoutViewItem>(); var gname = "R" + (layout.Count() + 1); //var ng = (layout.GetNode(gname)); //if (ng != null) //{ //} var group = layout.AddNode <IModelLayoutGroup>(gname); group.Index = index; group.Direction = FlowDirection.Horizontal; var lastIndex = group.NodeCount; foreach (var item in property) { var rst = group.AddNode <IModelLayoutViewItem>("I" + lastIndex); if (item != null) { var name = GetMemberName(item); rst.ViewItem = view.Items[name]; } lastIndex++; rst.Index = lastIndex; } return(group); } catch (Exception ex) { throw ex; } }
object GetObject(ViewShortcut shortcut, IModelDetailView modelDetailView, IObjectSpace objectSpace) { object objectKey = GetObjectKey(shortcut, modelDetailView.ModelClass.TypeInfo.Type, objectSpace); return GetObjectCore(modelDetailView, objectKey, objectSpace); }
bool IsEnable(IModelDetailView modelDetailView) { return ((IModelDetailViewProccessViewShortcuts)modelDetailView).ViewShortcutProccesor; }
public static void Set_DetailView(IModelDesignTemplateDetailView view, IModelDetailView modelDetailView) => view.DetailViewId = modelDetailView.Id;
public void LoadDetailViewInfo(IModelDetailView view) { this.LoadViewInfo(view); }
static bool ModelClassMatch(IModelProccessListViewSelectItem masterDetailRule, IModelDetailView view) { return(view.ModelClass == ((IModelListView)masterDetailRule.Parent).ModelClass); }
bool IsEnable(IModelDetailView modelDetailView) { var modelDetailViewProccessViewShortcuts = modelDetailView as IModelDetailViewProccessViewShortcuts; return modelDetailViewProccessViewShortcuts != null && (modelDetailViewProccessViewShortcuts).ViewShortcutProccesor; }
public static DetailView NewDetailView(this XafApplication application, object currentObject, IModelDetailView modelDetailView = null, bool isRoot = true) { var objectSpace = application.CreateObjectSpace(); modelDetailView ??= application.FindModelDetailView(currentObject.GetType()); var detailView = application.CreateDetailView(objectSpace, modelDetailView, isRoot); detailView.CurrentObject = objectSpace.GetObject(currentObject); return(detailView); }
object GetObject(ViewShortcut shortcut, IModelDetailView modelDetailView, IObjectSpace objectSpace) { object objectKey = GetObjectKey(shortcut, modelDetailView, objectSpace); return(GetObjectCore(modelDetailView, objectKey, objectSpace)); }
bool IsEnable(IModelDetailView modelDetailView) { var modelDetailViewProccessViewShortcuts = modelDetailView as IModelDetailViewProccessViewShortcuts; return(modelDetailViewProccessViewShortcuts != null && (modelDetailViewProccessViewShortcuts).ViewShortcutProccesor); }
private void FilteringCriterionListAction_Execute(object sender, SingleChoiceActionExecuteEventArgs e) { // Глушим стандартный полнотекстовый поиск standardFilterController.FullTextFilterAction.Enabled[FTS_DO_NOT_ENABLED] = false; ListViewClearFilter.Enabled[DO_NOT_ENABLED] = true; ListViewApplyFilter.Enabled[DO_NOT_ENABLED] = true; // В зависимости от выбранного пункта вызывается та или иная форма //frame = Frame; //view = View; //listView = view as DevExpress.ExpressApp.ListView; if (listView == null) { return; } // Находим, если задан, фильтр из модели string choiceActionItemFilterString = ""; FilterController fc = Frame.GetController <FilterController>(); ChoiceActionItem choiceActionItem = ((SingleChoiceAction)(fc.Actions["SetFilter"])).SelectedItem; if (choiceActionItem != null) { choiceActionItemFilterString = choiceActionItem.Data.ToString(); } if (e.SelectedChoiceActionItem.Id == "CriteriaBuilder") { // Показ формы построения запроса с помощью построителя критериев if (FilterIsShowihg) { if (currentFilterId == "CriteriaBuilder") { FilterPanelHide(); return; } } currentFilterId = "CriteriaBuilder"; FilterIsShowihg = true; // Разблокируем кнопку применения фильтра ListViewApplyFilter.Enabled.Clear(); ListViewApplyFilter.Enabled[DO_NOT_ENABLED] = true; // Тип объекта-фильтра Type filterObjType = typeof(FilteringCriterion); string strCriteria = this.criteriaBuilderString; IObjectSpace objectSpace = frame.Application.CreateObjectSpace(); FilteringCriterion objFilter = objectSpace.CreateObject(filterObjType) as FilteringCriterion; // objectSpace.GetObject(currentObject); if (objFilter == null) { return; } //objFilter.LV = listView; objFilter.objectTypeInfo = objectTypeInfo; //objFilter.CriteriaController = this; objFilter.Criterion = strCriteria; // Остаётся для построителя запросов в форме FilteringCriterion.cs //objFilter.AdditionalCriterionString = choiceActionItemFilterString; wp = objFilter as ICustomFilter; if (wp == null) { return; } string DetailViewId = frame.Application.FindDetailViewId(objFilter.GetType()); DetailView newView = frame.Application.CreateDetailView(objectSpace, DetailViewId, false, objFilter); newView.CreateControls(); filterPanel.Controls.Clear(); DevExpress.ExpressApp.Win.Layout.XafLayoutControl ctrlFilter = ((DevExpress.ExpressApp.Win.Layout.XafLayoutControl)newView.Control); filterPanel.Controls.Add(ctrlFilter); FilteringCriterionListAction.SelectedIndex = 0; FilterPanelShow(130); return; } if (e.SelectedChoiceActionItem.Data != null) { // Показ формы с полями от NonPersistent объекта, через которую формировать критерий поиска, присваивать его // списку и reload() этого списка // Разблокируем кнопку применения фильтра ListViewApplyFilter.Enabled.Clear(); ListViewApplyFilter.Enabled[DO_NOT_ENABLED] = true; IModelDetailView node = e.SelectedChoiceActionItem.Data as IModelDetailView; // Тип объекта-фильтра Type filterObjType = node.ModelClass.TypeInfo.Type; string strCriteria = this.criteriaBuilderString; IObjectSpace objectSpace = frame.Application.CreateObjectSpace(); ICustomFilter objFilter = objectSpace.CreateObject(filterObjType) as ICustomFilter; if (objFilter == null) { return; } //objFilter.LV = listView; objFilter.objectTypeInfo = objectTypeInfo; //objFilter.CriteriaController = this; //objFilter.AdditionalCriterionString = choiceActionItemFilterString; //objFilter.Criterion = strCriteria; string DetailViewId = frame.Application.FindDetailViewId(objFilter.GetType()); if (FilterIsShowihg & currentFilterId == DetailViewId) { FilterPanelHide(); return; } currentFilterId = DetailViewId; FilterIsShowihg = true; wp = objFilter as ICustomFilter; if (wp == null) { return; } DetailView newView = frame.Application.CreateDetailView(objectSpace, DetailViewId, false, objFilter); newView.CreateControls(); filterPanel.Controls.Clear(); DevExpress.ExpressApp.Win.Layout.XafLayoutControl ctrlFilter = ((DevExpress.ExpressApp.Win.Layout.XafLayoutControl)newView.Control); filterPanel.Controls.Add(ctrlFilter); FilteringCriterionListAction.SelectedIndex = 0; //FilterPanelShow(100); FilterPanelShow(GetFilterHight(newView) + 30); return; } }
public XpandDetailView(IModelDetailView info, IObjectSpace objectSpace, object obj, XafApplication application, bool isRoot) : base(info, objectSpace, obj, application, isRoot) { }
public XpandDetailView(IModelDetailView info, IObjectSpace objectSpace, object obj, XafApplication application, bool isRoot) : base(info, objectSpace, obj, application, isRoot) { this.UpdateLayoutManager(); }
bool IsEnable(IModelDetailView modelDetailView) { return(((IModelDetailViewProccessViewShortcuts)modelDetailView).ViewShortcutProccesor); }