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; //} }); }
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) }