Beispiel #1
0
        protected void Merge(string ds, string xml, string pageStyle, out IPageViewTool toolOut, List <Func <SubmitData, SubmitData> > resultFunList)
        {
            xml = Xml(xml);
            ModuleConfig config = xml.SingletonByPage <ModuleConfig>();

            var tool = GetPageViewTool(config);

            toolOut = tool;
            tool.BeginModuleMergeInterceptor(ref ds, ref xml, ref pageStyle, ref config);
            config = xml.SingletonByPage <ModuleConfig>();
            //FormConfig fc = config.Forms[0];
            //string plugName = fc.DataPlug;
            //IListDataTable source = plugName.PlugInPageGet<IListDataTable>();
            if (config.DataBase != null)
            {
                var app = AtawAppContext.Current;

                app.UnitOfData = config.DataBase.FetchUnitofData();
            }
            SetPostDataSet(ds);
            var forms = config.Forms;
            //int result = 0;
            //AtawDbContext dbContext = null;
            string foreignKey = "";

            forms.Where(a => a is FormConfig).Cast <FormConfig>().ToList().ForEach(form =>
            {
                //if (form.Action == PageStyle.Insert || form.Action == PageStyle.Update)
                //{
                IListDataTable source = form.DataPlug.InstanceByPage <IListDataTable>(form.Name);
                if (config.Mode == ModuleMode.MasterDetail)
                {
                    var relation = config.Relations.FirstOrDefault(a => a.DetailForm == form.Name);
                    foreignKey   = relation == null ? "" : relation.DetailField;
                }

                var dataForm = form.File.InstanceByPage <DataFormConfig>(form.Name);
                if (dataForm.PrimaryKey.IsEmpty())
                {
                    dataForm.PrimaryKey = dataForm.Columns.First(col => col.IsKey).Name;
                }
                if (pageStyle.IsEmpty())
                {
                    pageStyle = form.Action.ToString();
                }

                List <ColumnConfig> _fullColumns = null;


                AtawBaseFormViewCreator.MergeColumns(form, dataForm, config, pageStyle.Value <PageStyle>(), out _fullColumns);

                source.Initialize(new ModuleFormInfo(this.PostDataSet, 0, "", "", form.TableName, "", foreignKey,
                                                     false, dataForm, form.OrderSql, config.DataBase, form)
                {
                    FullColumns = _fullColumns
                }
                                  );
                source.Merge(true);
                resultFunList.Add(source.SubmitFilterFun);
                // source.SubmitFilterEvent(null);
                //}
                //if (dbContext == null && source is BaseDataTableSource)
                //{
                //    dbContext = ((BaseDataTableSource)source).DbContext;
                //}
            });
        }
Beispiel #2
0
        public virtual string ModuleMerge(string ds, string xml, string pageStyle)
        {
            DateTime d1 = DateTime.Now;

            //try
            //{
            xml = Xml(xml);
            IPageViewTool tool = null;
            List <Func <SubmitData, SubmitData> > resultFunList = new List <Func <SubmitData, SubmitData> >();

            Merge(ds, xml, pageStyle, out tool, resultFunList);
            int      res       = 0;
            var      dbContext = AtawAppContext.Current.UnitOfData;
            DateTime d0        = DateTime.Now;

            if (dbContext != null)
            {
                res = AtawAppContext.Current.UnitOfData.Submit();
            }



            int objRes = (AtawAppContext.Current.PageFlyweight.PageItems["ATAW_DATASOURCE_RETURN"] ?? "0").Value <int>();

            if (objRes > 0)
            {
                res = objRes;
            }
            var insertKeys = AtawAppContext.Current.PageFlyweight.PageItems["InsertKeys"] as List <string>;
            //DateTime d2 = DateTime.Now;
            //string dd = (d2 - d0).TotalMilliseconds.ToString();
            //if (insertKeys != null)
            //{
            //    return ReturnJsonObject("{\"res\":" + res + ",\"keys\":\"" + String.Join(",", insertKeys) + "\"}");
            //}
            SubmitData data = new SubmitData()
            {
                DataSourceInt = objRes,
                SubmitInt     = res,
                InsertKeys    = insertKeys,
                Result        = null
            };

            foreach (Func <SubmitData, SubmitData> fun in resultFunList)
            {
                data = fun(data);
            }

            if (data.Result != null)
            {
                string str = FastJson(data.Result);
                AtawTrace.WriteFile(LogType.JsonData, str);
                HttpContext.Response.HeaderEncoding = Encoding.UTF8;
                return(str);
            }
            else
            {
                //return ReturnJsonObject("{\"res\":" + res + ",\"keys\":\"\"}");
                return(tool.EndModuleMergeInterceptor(res, objRes, insertKeys));
            }

            // }
            //catch (AtawLegalException ex)
            //{
            //    JsResponseResult<object> ree = new JsResponseResult<object>()
            //        {
            //            ActionType = JsActionType.Alert,
            //            Content = ex.Message
            //        };
            //    return FastJson(ree);
            //}
            //return FastJson(source.Result);
            //foreach(Da)
        }