예제 #1
0
 public void Initialize(AtawPageConfigView pageView, AtawFormConfigView formView, ColumnConfig columnConfig, PageStyle style)
 {
     this.PageView  = pageView;
     this.FormView  = formView;
     this.Config    = columnConfig;
     this.PageStyle = style;
 }
 protected virtual void CreateGroupColumns(AtawFormConfigView formView, DataFormConfig dataformConfig)
 {
     dataformConfig.ColumnGroups.ForEach(group =>
     {
         var columnGroup         = new AtawColumnGroupConfigView();
         columnGroup.ShowType    = group.ShowType == 0 ? "ColShowType".AppKv <int>(4) : group.ShowType;
         columnGroup.Name        = group.Name;
         columnGroup.DisplayName = group.DisplayName;
         columnGroup.Columns     = new List <AtawColumnConfigView>();
         var hiddenColCount      = 0;
         group.Columns.ForEach(col =>
         {
             var colView = formView.Columns.FirstOrDefault(x => x.Name == col.Name);
             if (colView != null)
             {
                 columnGroup.Columns.Add(colView);
                 if (colView.ControlType == ControlType.Hidden)
                 {
                     hiddenColCount++;
                 }
             }
         });
         //组内没有成员,该组移除,若组内所有字段都是隐藏字段,该组隐藏
         if (columnGroup.Columns.Count > 0)
         {
             formView.ColumnGroups.Add(columnGroup);
             if (columnGroup.Columns.Count == hiddenColCount)
             {
                 columnGroup.IsHidden = true;
             }
         }
     });
 }
        private AtawFormConfigView CreateBatchInsertForm(AtawFormConfigView formView)
        {
            AtawFormConfigView insertFormView = new AtawFormConfigView();

            insertFormView.FormType         = FormType.Normal;
            insertFormView.ShowKind         = ShowKind.Tile;
            insertFormView.AfterInitFunName = formView.AfterInitFunName;
            insertFormView.TableName        = formView.TableName;
            insertFormView.PrimaryKey       = formView.PrimaryKey;
            insertFormView.Title            = formView.Title;
            insertFormView.Name             = formView.Name + "_INSERT";
            insertFormView.Columns          = formView.Columns;
            return(insertFormView);
        }
        private AtawFormConfigView CreateSearchFormView(AtawFormConfigView formView, List <ColumnConfig> columns)
        {
            AtawFormConfigView searchFormView = new AtawFormConfigView();

            searchFormView.FormType   = FormType.Normal;
            searchFormView.ShowKind   = ShowKind.Tile;
            searchFormView.TableName  = formView.TableName + "_SEARCH";
            searchFormView.PrimaryKey = formView.PrimaryKey;
            searchFormView.Title      = formView.Title + "查询";
            searchFormView.Name       = formView.Name + "_SEARCH";
            searchFormView.Columns    = new List <AtawColumnConfigView>();
            foreach (var column in columns)
            {
                CreateSearchColumn(searchFormView, column);
            }
            return(searchFormView);
        }
        private AtawFormConfigView CreateBatchInsertForm(AtawFormConfigView formView)
        {
            PageStyle = PageStyle.Insert;
            AtawFormConfigView insertFormView = new AtawFormConfigView();

            insertFormView.FormType   = FormType.Normal;
            insertFormView.ShowKind   = ShowKind.Tile;
            insertFormView.TableName  = formView.TableName;
            insertFormView.PrimaryKey = formView.PrimaryKey;
            insertFormView.Title      = formView.Title.Substring(0, formView.Title.Length - 2) + "新增";
            insertFormView.Name       = formView.Name + "_INSERT";
            insertFormView.Columns    = new List <AtawColumnConfigView>();
            //Grid的批量新增,新增字段要与修改字段保存一致, 其他类型的表单可以不一致---------------------------重要的约定
            if (FormConfig.FormType == FormType.Grid)
            {
                formView.Columns.ForEach(a =>
                {
                    var column = DataFormConfig.Columns.FirstOrDefault(b => b.Name == a.Name);
                    //Grid支持批量新增时,若字段配置新增页面不显示,那新增的时候该字段的控件类型应为Detail
                    if ((column.ShowPage & PageStyle.Insert) != PageStyle.Insert)
                    {
                        var col         = CreateColumn(insertFormView, column);
                        col.ControlType = ControlType.Detail;
                        insertFormView.Columns.Add(col);
                    }
                    else
                    {
                        insertFormView.Columns.Add(CreateColumn(insertFormView, column));
                    }
                });
            }
            else if (FormConfig.FormType == FormType.Normal || FormConfig.FormType == FormType.Album)
            {
                DataFormConfig.Columns.ForEach(a =>
                {
                    if ((a.ShowPage & PageStyle.Insert) == PageStyle.Insert)
                    {
                        insertFormView.Columns.Add(CreateColumn(insertFormView, a));
                    }
                });
            }
            return(insertFormView);
        }
예제 #6
0
        public AtawPageViewModel Create()
        {
            result = new AtawPageViewModel();
            //数据载入完毕
            result.Data = new DataSet();
            //result.Data.Tables.Add(DataSourceRegName.PlugIn<DataTable>());
            // result.Data.Aggregate(result.Data);
            var listDataTable = DataSourceRegName.CodePlugIn <IListDataTable>();

            foreach (DataFormConfig form in DataFormConfigs)
            {
                AtawFormConfigView formView = new AtawFormConfigView();
                formView.FormType  = FormType.Normal;
                formView.ShowKind  = ShowKind.Tile;
                formView.TableName = form.TableName;
                formView.Title     = form.Title;

                formView.Columns = new List <AtawColumnConfigView>();
                foreach (var column in form.Columns)
                {
                    AtawColumnConfigView to = new AtawColumnConfigView();
                    to.ControlType = column.ControlType;
                    to.DisplayName = column.DisplayName;
                    to.Prompt      = column.Prompt;
                    to.ValPrompt   = column.ValPrompt;
                    to.Name        = column.Name;

                    string _controlRegname = column.ControlType.ToString();
                    // to.Options
                    var _optionCreator = _controlRegname.CodePlugIn <AtawOptionCreator>();
                    //初始化
                    _optionCreator.Config = column;
                    // _optionCreator.FormData = result.Data[formView.TableName];
                    _optionCreator.FormView = formView;
                    //方法调用
                    to.Options = _optionCreator.Create();
                }
            }
            return(result);
        }
        protected virtual void CreateColumns(AtawFormConfigView formView, DataFormConfig dataformConfig, FormConfig formConfig)
        {
            foreach (var column in dataformConfig.Columns)
            {
                if ((column.ShowPage & PageStyle) != PageStyle)
                {
                    continue;
                }
                else
                {
                    //var col = CreateColumn(formView, column);
                    ////列表和明细页面的所有字段控件类型为Detail
                    //if (!column.IsKey && (PageStyle == PageStyle.Detail || PageStyle == PageStyle.List))
                    //    col.ControlType = ControlType.Detail;
                    //formView.Columns.Add(col);
                    formView.Columns.Add(CreateColumn(formView, column));

                    //if (column.Navigation != null && column.Navigation.IsAvailable == true)
                    //{
                    //    formView.NavigationColumns.Add(CreateColumnNavigation(formView, column));
                    //}
                }
            }
        }
        private void CreateSearchColumn(AtawFormConfigView formView, ColumnConfig column)
        {
            AtawColumnConfigView colView = new AtawColumnConfigView();

            if (column.IsReadOnly)
            {
                column.IsReadOnly = false;
            }

            if (column.ControlType == ControlType.TreeMultiSelector)
            {
                colView.ControlType = ControlType.TreeSingleSelector;
            }
            else if (column.ControlType == ControlType.Detail || column.ControlType == ControlType.TextArea || (column.Search != null && column.Search.IsLike == true))//添加如果islike为true
            {
                colView.ControlType = ControlType.Text;
            }
            //else if (column.Search.ControlType != ControlType.None)
            //{
            //    colView.ControlType = column.Search.ControlType;
            //}
            else if (column.ControlType == ControlType.SingleCheckBox)
            {
                colView.ControlType = ControlType.Combo;
                column.RegName      = "SingleCheckBoxIsOrNo";
            }
            else
            {
                colView.ControlType = column.ControlType;
            }
            //搜索区的控件类型当为搜索字段配置的控件类型
            if (column.Search.ControlType != ControlType.None)
            {
                colView.ControlType = column.Search.ControlType;
            }
            if (column.Search.DateSpan)
            {
                colView.DisplayName = column.DisplayName + "开始";
            }
            else
            {
                colView.DisplayName = column.DisplayName;
            }
            colView.DisplayName = column.DisplayName;
            colView.Name        = column.Name;

            string controlRegname = colView.ControlType.ToString();
            // to.Options
            var optionCreator = controlRegname.CodePlugIn <AtawOptionCreator>();

            //初始化
            optionCreator.Initialize(BasePageView, formView, column, PageStyle.None);
            //方法调用
            colView.Options = optionCreator.Create();

            if (!column.DetailRegName.IsEmpty())
            {
                colView.Options.RegName = column.DetailRegName;
            }
            if (column.Search != null && column.Search.IsOpenByDefault == true)
            {
                colView.Options.IsOpenByDefault = true;
            }
            colView.Options.DataValue = null;
            if (column.ControlType == ControlType.Text) //Text字段,模糊查询
            {
                colView.Options.PostSetting.ColumnName = colView.Name + "_LIKE";
            }
            //如果islike为true则
            if (column.Search != null && column.Search.IsLike == true)
            {
                colView.Options.PostSetting.ColumnName = colView.Name + "_LIKE";
                colView.Options.IsLike = true;
            }
            if (column.Search.IsExtension) //查询扩展
            {
                colView.Options.PostSetting.ColumnName = colView.Name + "_IN";
            }

            //查询区日期控件需要扩展成2个控件
            if (column.Search.DateSpan)
            {
                colView.DisplayName = column.DisplayName + "开始";
                formView.Columns.Add(colView);
                PageStyle = PageStyle.None;//避免创建选择器控件或多选控件的时候重复解码CodeTable
                var col = CreateColumn(formView, column);
                PageStyle             = PageStyle.List;
                col.DisplayName       = column.DisplayName + "结束";
                col.Name              = column.Name + "_END";
                col.ControlType       = colView.ControlType;
                col.Options.DataValue = null;
                col.Options.PostSetting.ColumnName = col.Name;
                formView.Columns.Add(col);
            }
            else
            {
                formView.Columns.Add(colView);
            }
        }
        protected override AtawColumnConfigView CreateColumn(AtawFormConfigView formView, ColumnConfig column)
        {
            var col = base.CreateColumn(formView, column);

            switch (column.ControlType)
            {
            case ControlType.Hidden:
                col.ControlType = ControlType.Hidden;
                break;

            case ControlType.Date:
                col.ControlType = ControlType.DetailDate;
                break;

            case ControlType.MultiFileUpload:
            case ControlType.SingleFileUpload:
                col.ControlType = ControlType.FileDetail;
                break;

            case ControlType.SingleImageUpload:
            case ControlType.MultiImageUpload:
                col.ControlType = ControlType.ImageDetail;
                break;

            case ControlType.Editor:
                col.ControlType = ControlType.EditorDetail;
                break;

            case ControlType.InnerPage:
                col.ControlType = ControlType.InnerPage;
                break;

            case ControlType.InnerForm:
                col.ControlType = ControlType.InnerForm;
                break;

            //case ControlType.MaskCode:
            //    col.ControlType = ControlType.MaskCode;
            //    break;
            case ControlType.Amount:
                col.ControlType = ControlType.AmountDetail;
                break;

            case ControlType.AmountDetail:
                col.ControlType = ControlType.AmountDetail;
                break;

            case ControlType.TwoColumns:
                col.ControlType = ControlType.TwoColumnsDetail;
                break;

            case ControlType.TwoColumnsDetail:
                col.ControlType = ControlType.TwoColumnsDetail;
                break;

            case ControlType.TextArea:
                col.ControlType = ControlType.DetailArea;
                break;

            case ControlType.DetailArea:
                col.ControlType = ControlType.DetailArea;
                break;

            default:
                col.ControlType = ControlType.Detail;
                break;
            }

            //if (column.ControlType != ControlType.Hidden)
            //    col.ControlType = ControlType.Detail;
            //if (column.ControlType == ControlType.Date)
            //    col.ControlType = ControlType.DetailDate;
            //if (column.ControlType == ControlType.SingleFileUpload)
            //    col.ControlType = ControlType.DownLink;
            //if (column.ControlType == ControlType.SingleImageUpload || column.ControlType == ControlType.MultiImageUpload)
            //    col.ControlType = ControlType.ImageDetail;
            ////case ControlType.Editor:
            ////     col.ControlType = ControlType.EditorDetail;
            ////     break;
            //if (column.ControlType == ControlType.Editor)
            //    col.ControlType = ControlType.EditorDetail;
            return(col);
        }
        protected virtual AtawColumnConfigView CreateColumn(AtawFormConfigView formView, ColumnConfig column)
        {
            AtawColumnConfigView colView = new AtawColumnConfigView();

            colView.ControlType = column.ControlType;
            colView.DisplayName = column.DisplayName;
            colView.Prompt      = column.Prompt;
            colView.ValPrompt   = column.ValPrompt;

            //if ((PageStyle == PageStyle.Update || PageStyle == PageStyle.Insert) && colView.ValPrompt != null && column.ShowType > 0)
            //{

            //    column.ShowType = column.ShowType >= 3?0:2;

            //}
            if (column.Changer != null)
            {
                colView.Changer               = new ChangerViewConfig();
                colView.Changer.Expression    = column.Changer.Expression;
                colView.Changer.DependColumns = column.Changer.DependColumns;
                colView.Changer.NotifyColumns = column.Changer.NotifyColumns;
            }

            if (column.ShowType == 0 ||
                column.ControlType == ControlType.AllImageShow ||
                column.ControlType == ControlType.Editor ||
                column.ControlType == ControlType.EditorDetail ||
                column.ControlType == ControlType.ImageDetail ||
                column.ControlType == ControlType.PCAS ||
                column.ControlType == ControlType.MultiSelector ||
                column.ControlType == ControlType.MultiImageUpload ||
                column.ControlType == ControlType.SingleImageUpload ||
                column.ControlType == ControlType.SingleFileUpload ||
                column.ControlType == ControlType.MultiFileUpload ||
                column.ControlType == ControlType.FormMultiSelector ||
                column.ControlType == ControlType.TextArea)
            {
                colView.ShowType = "ColShowType".AppKv <int>(4);
            }
            else
            {
                colView.ShowType = column.ShowType;
            }
            if (column.ControlType == ControlType.Hidden)
            {
                colView.ShowType = 0;
            }
            colView.Sortable       = column.Sortable;
            colView.IsDetailLink   = column.IsDetailLink;
            colView.Name           = column.Name;
            colView.Kind           = column.Kind;
            colView.NormalStyle    = column.NormalStyle;
            colView.TdStyle        = column.TdStyle;
            colView.IsHiddenCol    = column.IsHiddenCol;
            colView.Width          = column.Width;
            colView.LinkFormat     = column.LinkFormat;
            colView.ChangeEventFun = column.ChangeEventFun;
            colView.Report         = column.Report;
            colView.TreeConfig     = column.TreeConfig;
            colView.ShortCutName   = column.ShortCutName;
            colView.Amount         = column.Amount;
            if (column.ControlType == ControlType.Custom)
            {
                AtawDebug.AssertArgumentNull(column.CustomControl, "Custom控件类型需要配置CustomControl", column);
                AtawDebug.AssertArgumentNullOrEmpty(column.CustomControl.ControlType, "CustomControl中必须指定自定义控件类型", column);
            }

            colView.CustomControl = column.CustomControl;
            if (column.ControlType == ControlType.Editor)
            {
                colView.Editor = column.Editor;
            }

            if (!column.SourceName.IsEmpty())
            {
                colView.QingColumnName = column.Name;
            }

            string controlRegname = column.ControlType.ToString();
            // to.Options
            var optionCreator = controlRegname.CodePlugIn <AtawOptionCreator>();

            //初始化
            optionCreator.Initialize(BasePageView, formView, column, PageStyle);
            //方法调用
            colView.Options = optionCreator.Create();
            return(colView);
        }
        protected AtawFormConfigView CreateFormView(DataFormConfig dataForm, FormConfig formConfig)
        {
            AtawFormConfigView formView = new AtawFormConfigView();

            formView.FormType           = formConfig.FormType;
            formView.ShowKind           = formConfig.ShowKind;
            formView.AfterInitFunName   = formConfig.AfterInitFunName;
            formView.VerticalTab        = formConfig.VerticalTab; //布局方式
            formView.HasBatchInsert     = false;
            formView.HasPager           = false;
            formView.HasSearch          = false;
            formView.ParentFieldName    = formConfig.ParentFieldName;
            formView.TextFieldName      = formConfig.TextFieldName;
            formView.IsParentFieldName  = formConfig.IsParentFieldName;
            formView.IsSafeMode         = formConfig.IsSafeMode;
            formView.HasReview          = formConfig.HasReview;
            formView.Calendar           = formConfig.Calendar;
            formView.ExpandDetailPlug   = formConfig.ExpandDetailPlug;
            formView.RowTpl             = formConfig.RowTpl;
            formView.ContentTpl         = formConfig.ContentTpl;
            formView.DisableColumnGroup = formConfig.Group.IsDisabled.ToLower() == "true" || formConfig.Group.IsDisabled == "1" ? true : false;
            // formView.Tpl = formConfig.Tpl;
            var _bean = formConfig.Tpls.FirstOrDefault(a => a.PageStyle == PageStyle);

            if (_bean != null)
            {
                formView.Tpl = _bean.Item;
            }


            formView.IsInner          = formConfig.IsInner;
            formView.HaveNoSwitchForm = formConfig.HaveNoSwitchForm;
            formView.HaveNoSortBar    = formConfig.HaveNoSortBar;
            //var NavigationList = dataForm.Columns.Where(a => a.Navigation != null);
            //if (NavigationList.Count() > 0)
            //{
            //    formView.HasNavigation = true;
            //     List<ColumnConfig> columns = NavigationList.ToList();
            //     foreach (var column in columns)
            //     {
            //         AtawColumnConfigView colView = new AtawColumnConfigView();
            //         if (column.Navigation != null && column.Navigation.IsAvailable == true && (column.ControlType == ControlType.CheckBox || column.ControlType == ControlType.Combo || column.ControlType == ControlType.Radio || column.ControlType == ControlType.TreeSingleSelector || column.ControlType == ControlType.TreeMultiSelector))
            //         {
            //             if (column.ControlType == ControlType.CheckBox)
            //             {
            //                 colView.ControlType = ControlType.CheckBoxNavi;
            //             }
            //             else if (column.ControlType == ControlType.Radio || column.ControlType == ControlType.Combo)
            //             {
            //                 colView.ControlType = ControlType.RadioNavi;
            //             }
            //             else if (column.ControlType == ControlType.TreeSingleSelector)
            //             {
            //                 colView.ControlType = ControlType.TreeSingleNavi;
            //             }
            //             else
            //             {
            //                 colView.ControlType = ControlType.TreeMultiNavi;
            //             }
            //         }
            //     }
            //}
            formView.TableName = formConfig.TableName;
            //if (formView.TableName.IsEmpty())
            //    formView.TableName = dataForm.TableName;
            //if (formView.TableName.IsEmpty())
            //    formView.TableName = formConfig.DataPlug.PlugInPageGet<IListDataTable>().RegName;

            formView.Title = formConfig.Title;
            //if (formView.Title.IsEmpty())
            //    formView.Title = dataForm.Title;
            //if (formView.Title.IsEmpty())
            //    formView.Title = ModuleConfig.Title;
            if (ModuleConfig.Mode == ModuleMode.None)
            {
                formView.Title = formView.Title;
            }
            else
            {
                switch (PageStyle)
                {
                case PageStyle.List:
                    formView.Title = formView.Title + "列表";
                    break;

                case PageStyle.Detail:
                    formView.Title = formView.Title + "明细";
                    break;

                case PageStyle.Update:
                    formView.Title = formView.Title + "修改";
                    break;

                case PageStyle.Insert:
                    formView.Title = formView.Title + "新增";
                    break;
                }
            }

            formView.Name = formConfig.Name;
            //if (formView.Name.IsEmpty())
            //    formView.Name = dataForm.Name;
            //if (formView.Name.IsEmpty())
            //    formView.Name = formView.TableName;
            //string msg = string.Format("数据源为{0}插件的form的名称不能为空", formConfig.DataPlug);
            //AtawDebug.AssertNotNullOrEmpty(formView.Name, msg, this);
            formView.Columns = new List <AtawColumnConfigView>();
            CreateColumns(formView, dataForm, formConfig);

            formView.ColumnGroups = new List <AtawColumnGroupConfigView>();
            CreateGroupColumns(formView, dataForm);

            formView.NavigationColumns = new List <AtawNaviColumnConfigView>(); //可能有多个navi(目前只有一个)
            if (PageStyle == Core.PageStyle.List)
            {
                var navigation = dataForm.Columns.FindAll(a => a.Navigation != null && a.Navigation.IsAvailable);
                foreach (var navi in navigation)
                {
                    if (navigation != null)
                    {
                        var viewColumn = formView.Columns.FirstOrDefault(a => a.Name == navi.Name);
                        var viewNavi   = CreateColumnNavigation(viewColumn, navi);
                        if (viewNavi != null)
                        {
                            formView.NavigationColumns.Add(viewNavi);
                        }
                    }
                }
            }
            return(formView);
        }