public static GroupSchemas GetSchemasNoSetDefaultSchema( string xml, string localeid) { XmlDocument schemaXmlDoc = null; if (!string.IsNullOrEmpty(xml)) { schemaXmlDoc = new XmlDocument(); schemaXmlDoc.LoadXml(xml); } GroupSchemas gss = new GroupSchemas(false); if (schemaXmlDoc != null) { XmlElement root = schemaXmlDoc.DocumentElement; if (root != null) { foreach (XmlElement ele in root.ChildNodes) { gss.Add(GroupSchemas.GetGroupSchemaFromXml(ele, localeid)); } } } // 如果没有无分组项,则要添加 if (gss[GroupSchemas._xmlValueDefaultNoGroupId] == null) { if (false) { gss.Add(GroupSchemas.GetDefaultCrossSchema()); } else { gss.Add(GroupSchemas.GetDefaultGroupSchema()); } } return(gss); }
private static string GetAtrribute( XmlElement ele, string atrrName) { return(GroupSchemas.GetAtrribute(ele, atrrName, string.Empty)); }
public string SaveCrossSchemasWithLock(U8LoginInfor login, string viewID, string crossSchemas, string actionType) { //1开一个新的连接,并开事务 SqlConnection cnn = new SqlConnection(login.UfMetaCnnString); cnn.Open(); SqlTransaction tran = cnn.BeginTransaction(); string result = string.Empty; try { //21 首先获取当前数据库的groupSchemas,并构造要保存的groupSchemas XmlDocument doc = this.GetCrossSchemasWithXLock(viewID, tran); //tran GroupSchemas haveSaveCrossSchemas = GroupSchemas.GetSchemas(doc, ""); GroupSchemas toSaveCrossSchemas = GroupSchemas.GetSchemasNoSetDefaultSchema(crossSchemas, ""); //3然后每一个groupSchema做对比 if (toSaveCrossSchemas.Count <= 0) { return(toSaveCrossSchemas.ToXml().InnerXml); } GroupSchema cs = toSaveCrossSchemas[0];//要更新的 foreach (GroupSchema group in toSaveCrossSchemas) { if (group.ID != NOGROUPID) { cs = group; } } GroupSchema oldGs = GetGroupSchemaById(haveSaveCrossSchemas, cs.ID);//数据库中已经有的 switch (actionType.ToLower().Trim()) { case "delete": if (oldGs == null) { throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Delete.Ex", login.LocaleID)); //"没有权限" //throw new Exception(String4Report.GetString("操作失败,别人已经删除")); } haveSaveCrossSchemas.Remove(oldGs); break; case "add": if (HaveSameName(haveSaveCrossSchemas, cs)) { throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Add.Ex", login.LocaleID)); //throw new Exception(String4Report.GetString("存在重名的分组/交叉,请再次打开报表后更改")); } cs.GuidVersion = Guid.NewGuid().ToString(); haveSaveCrossSchemas.Add(cs); SetOtherSchemaBDefault(haveSaveCrossSchemas, cs); break; case "modify": if (oldGs == null) { throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Delete.Ex", login.LocaleID)); //"没有权限" //throw new Exception(String4Report.GetString("操作失败,别人已经删除")); } //表明同一个用户在操作,不校验并发 if (string.IsNullOrEmpty(oldGs.LastUserGuid) || oldGs.LastUserGuid == cs.LastUserGuid) { if (HaveSameName(haveSaveCrossSchemas, cs)) { throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Modify.Ex2", login.LocaleID)); //throw new Exception(String4Report.GetString("存在重名的分组/交叉,请再次打开报表后更改")); } haveSaveCrossSchemas.Remove(oldGs); cs.GuidVersion = Guid.NewGuid().ToString(); haveSaveCrossSchemas.Add(cs); SetOtherSchemaBDefault(haveSaveCrossSchemas, cs); } //表明同一个用户在操作,不校验并发 else { if (oldGs.GuidVersion == cs.GuidVersion) { if (HaveSameName(haveSaveCrossSchemas, cs)) { throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Modify.Ex2", login.LocaleID)); //throw new Exception(String4Report.GetString("存在重名的分组/交叉,请再次打开报表后更改")); } haveSaveCrossSchemas.Remove(oldGs); cs.GuidVersion = Guid.NewGuid().ToString(); haveSaveCrossSchemas.Add(cs); SetOtherSchemaBDefault(haveSaveCrossSchemas, cs); } else { throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Modify.Ex3", login.LocaleID)); //throw new Exception(String4Report.GetString("操作失败,别人已经修改")); } } break; default: break; } result = haveSaveCrossSchemas.ToXml().InnerXml; string sql = "UPDATE UAP_ReportView SET PreservedField = @CrossSchemas WHERE ID=@ViewID"; SqlCommand command = new SqlCommand(sql, cnn); command.Parameters.Add(new SqlParameter("CrossSchemas", result)); command.Parameters.Add(new SqlParameter("ViewID", viewID)); SqlHelper.ExecuteNonQuery(tran, command); tran.Commit(); } catch (Exception e) { tran.Rollback(); throw e; } finally { if (cnn.State == ConnectionState.Open) { cnn.Close(); } } return(result); }
private static void SetGroupSchemaProperty( string localeid, GroupSchema gs, XmlElement groupSchemaElement) { gs.ID = GroupSchemas.GetAtrribute(groupSchemaElement, GroupSchemas._xmlKeyID); gs.bDefault = Boolean.Parse(GroupSchemas.GetAtrribute( groupSchemaElement, GroupSchemas._xmlKeybDefault, "False")); string s = GroupSchemas.GetAtrribute( groupSchemaElement, GroupSchemas._xmlKeybShowDetial, "False"); if (s == "1") { s = "True"; } else if (s == "0") { s = "False"; } gs.bShowDetail = Boolean.Parse(s); //添加是否显示小计 string showSubTotal = GroupSchemas.GetAtrribute( groupSchemaElement, GroupSchemas._xmlKeyIsShowSubTotal); bool bShowSubTotal = false; if (!string.IsNullOrEmpty(showSubTotal)) { if (showSubTotal.ToLower() == "true") { bShowSubTotal = true; } } gs.bShowSubTotal = bShowSubTotal; gs.bGroupItemsAhead = Boolean.Parse(GroupSchemas.GetAtrribute( groupSchemaElement, GroupSchemas._xmlKeybGroupItemsAhead, "True")); int showStyle = Convert.ToInt32(GroupSchemas.GetAtrribute( groupSchemaElement, GroupSchemas._xmlKeyShowStyle, "2")); gs.ShowStyle = (ShowStyle)showStyle; if (gs.ShowStyle == ShowStyle.NoGroupSummary) //折叠展现默认显示小计,即折叠的一级元素 { gs.bShowSubTotal = true; } gs.SwitchItem = GroupSchemas.GetAtrribute( groupSchemaElement, GroupSchemas._xmlKeySwitchItem, ""); //modifytime赋值 gs.GuidVersion = GroupSchemas.GetAtrribute( groupSchemaElement, GroupSchemas._xmlKeyVersion, ""); gs.LastUserGuid = GroupSchemas.GetAtrribute( groupSchemaElement, GroupSchemas._xmlKeyLastUserGuid, ""); gs.bShowCrossNullColumn = Boolean.Parse(GroupSchemas.GetAtrribute( groupSchemaElement, GroupSchemas._xmlKeyShowNullCrossColumn, "True")); gs.BShowHorizonTotal = Boolean.Parse(GroupSchemas.GetAtrribute( groupSchemaElement, GroupSchemas._xmlKeyBShowHorizonTotal, "True")); }