Exemplo n.º 1
0
		public static string getParam(string param,string userid)
		{
			
			string str="";
			User userRight=new User(userid);
			//所属单位
			string unit = userRight.SubDeptName;
			//所属部门
			string dept = userRight.SubDeptName;
			//用户名
			string unsername = userRight.UserName;
			//用户帐号
			string useraccount = userRight.UserAccounts;
			switch(param)
			{
				case "&[date]":
				case "&[日期]": str = DateTime.Now.ToString("yyyy年MM月dd日");
					break;
				case "&[单位]": str = unit;
					break;
				case "&[部门]": 
				case "prnunit": str = dept;
					break;
				case "prnname":
				case "prnman":
				case "&[姓名]": str = unsername;
					break;
				default:
					str = "";
					break;
			}
			return str;
		}
Exemplo n.º 2
0
		private	User			_userRight;//用户权限
	
		protected void Page_Load(object sender, System.EventArgs e)
		{
			// 在此处放置用户代码以初始化页面
			if (Session["userid"] == null)
			{
				this.Response.Write("<script language=\"javascript\">");
				this.Response.Write("alert('您未正常登录,请登录后再使用,谢谢!')");
				this.Response.Write("</script>");
				this.Response.Redirect("index.htm",true);
			}
            string str = this.Request.ServerVariables["SERVER_NAME"];

			this._userRight=new User(this.Session["userid"].ToString());
		}
Exemplo n.º 3
0
		private void createTreeMenu()
		{
			User user=new User(Session["userid"].ToString());
			this.ViewState["strItemsGrp"]   = "";
			this.ViewState["navpage"]       = "";
			this.ViewState["startitem"]     = "";
            string strDeptID = "";
            if ("" != user.SubDeptCode)
                strDeptID = user.SubDeptCode;
            else if ("" != user.DeptmentCode)
                strDeptID = user.DeptmentCode;
            else if ("" != user.UnitCode)
                strDeptID = user.UnitCode;
            if ("" == strDeptID || "" == user.RoleName)
                return;
			//找到角色节点和单元节点
            //string strXPath = "//Node[contains(Tag,'@类型=单位') and contains(Tag,'@代码={0}')]"
            //    +"/Nodes/Node[contains(Tag,'@类型=角色') and contains(Tag,'@名称={1}')]/Nodes/Node";
            //strXPath=string.Format(strXPath,strDeptID.ToLower(),user.RoleName);

            if (user.DsDeptRight == null)
            {
                this.Response.Write("<script language=\"javascript\">alert(\"系统故障,请检查管理权限文件是否正确!\");parent.parent.location.href=\"default.htm\";</script>");
                return;
            }

			//用user.TabDeptRight生成树结构
            Xml CtrlXmlLand = new Xml();
            CtrlXmlLand.Document = new XmlDataDocument(user.DsDeptRight);
            Response.ContentType = "text/xml";
            Response.Expires = -1;
            Response.Clear();
            Response.Write("<?xml   version='1.0'   encoding='GB2312'?>");
            Response.Write(CtrlXmlLand.Document.InnerXml);
            //Response.End();   
		}
Exemplo n.º 4
0
 /// <summary>
 /// 数据更新,带有权限的更新,并设置是否清除数据状态
 /// </summary>
 /// <param name="bIsReset">是否重置状态</param>
 /// <param name="currentUser">当前的权限用户</param>
 /// <returns></returns>
 public override bool Update(bool bIsReset, User currentUser)
 {
     return true;
 }
Exemplo n.º 5
0
        public static string getParam(string param, User userright, NameObjectList paramlist)
		{
			string str="";
			//所属单位
            string unit = (userright == null) ? paramlist["DWName"].ToString() : userright.UnitName;
			//所属部门
            string dept = (userright == null) ? paramlist["DeptName"].ToString() : userright.SubDeptName;
			//用户名
            string unsername = (userright == null) ? paramlist["UserName"].ToString() : userright.UserName;
			//用户帐号
            string useraccount = (userright == null) ? paramlist["UserAccounts"].ToString() : userright.UserAccounts;
			//月份
            if(param.IndexOf("&[半年起始月")>-1) str = getHYfirstmonth(param);
			

			DateTime	dt=DateTime.Now;
			switch(param)
			{
				case "&[date]":
				case "&[日期]": 
					str = DateTime.Now.ToString("yyyy年MM月dd日");
                    if (paramlist != null)
                    {
                        if (null != paramlist["日期"]) str = paramlist["日期"].ToString();
                        else
                        {
                            if (null != paramlist["EndDate"])
                                dt = (DateTime)paramlist["EndDate"];
                            str = dt.ToString("yyyy年MM月dd日");
                        }
                    }
					break;
                case "&[datemonth]":
                    str = DateTime.Now.ToString("yyyy年MM月dd日") + " " + System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(DateTime.Now.DayOfWeek);
                    break;
				case "&[年月]": str = DateTime.Now.ToString("yyyy年MM月");
                    if (paramlist != null)
                    {
                        if (null != paramlist["年月"])
                            str = paramlist["年月"].ToString();
                        else
                        {
                            if (null != paramlist["EndDate"])
                                dt = (DateTime)paramlist["EndDate"];
                            str = dt.ToString("yyyy年MM月");
                        }
                    }
					break;
				case "&[年]": str = DateTime.Now.ToString("yyyy年");
                    if (paramlist != null)
                    {
                        if (null != paramlist["年"])
                            str = paramlist["年"].ToString();
                        else
                        {
                            if (null != paramlist["EndDate"])
                                dt = (DateTime)paramlist["EndDate"];
                            str = dt.ToString("yyyy年");
                        }
                    }
					break;
                case "&[月]": str = DateTime.Now.ToString("MM");
                    break;
                case "&[日]": str = DateTime.Now.ToString("dd");
                    break;
                case "&[时]": str = DateTime.Now.ToString("hh");
                    break;
                case "&[分]": str = DateTime.Now.ToString("mm");
                    break;
                case "&[单位]": str = unit;
					break;
				case "&[部门]": 
				case "prnunit": str = dept;
					break;
				case "prnname":
				case "prnman":
				case "&[姓名]": str = unsername;
					break;
				case "&[账号]": 
				case "&[帐号]": 
					str = useraccount;
					break;
                default:
                    string ss = param.Substring(param.IndexOf("&"));
                    if (paramlist != null)
                        str = paramlist[ss.Replace("&[", "").Replace("]", "")].ToString();
                    break;

			}
			return str;
		}
Exemplo n.º 6
0
		/// <summary>
		/// 给<PageSetup>赋值prnunit,prnname
		/// </summary>
		/// <param name="xmldoc"></param>
        public static void setpageSetup(XmlDocument xmldoc, User userright, NameObjectList paramlist)
		{
            if (paramlist == null) return;
			XmlNamespaceManager	xmlNsmgl=new XmlNamespaceManager(xmldoc.NameTable);
			xmlNsmgl.AddNamespace("docpro","urn:schemas-microsoft-com:office:excel");
			//遍历PageSetup下的所有子节点
            if (xmldoc.DocumentElement.SelectSingleNode("//docpro:PageSetup", xmlNsmgl) == null) return;
			XmlNodeList nodelist = xmldoc.DocumentElement.SelectSingleNode("//docpro:PageSetup",xmlNsmgl).ChildNodes;
			for(int i=0; i<nodelist.Count;i++)
			{
				for(int j=0;j<nodelist[i].Attributes.Count;j++)
				{
					string nval = nodelist[i].Attributes[j].Value;
                    nodelist[i].Attributes[j].Value = nodelist[i].Attributes[j].Value.Replace("prnname", getParam("prnname", userright, paramlist));
                    nodelist[i].Attributes[j].Value = nodelist[i].Attributes[j].Value.Replace("prnman", getParam("prnman", userright, paramlist));
                    nodelist[i].Attributes[j].Value = nodelist[i].Attributes[j].Value.Replace("&[姓名]", getParam("&[姓名]", userright, paramlist));
                    nodelist[i].Attributes[j].Value = nodelist[i].Attributes[j].Value.Replace("prnunit", getParam("prnunit", userright, paramlist));
                    nodelist[i].Attributes[j].Value = nodelist[i].Attributes[j].Value.Replace("&[日期]", getParam("&[日期]", userright, paramlist));
                    nodelist[i].Attributes[j].Value = nodelist[i].Attributes[j].Value.Replace("&[date]", getParam("&[date]", userright, paramlist));
                    nodelist[i].Attributes[j].Value = nodelist[i].Attributes[j].Value.Replace("&[单位]", getParam("&[单位]", userright, paramlist));
                    nodelist[i].Attributes[j].Value = nodelist[i].Attributes[j].Value.Replace("&[部门]", getParam("&[部门]", userright, paramlist));
                    nodelist[i].Attributes[j].Value = nodelist[i].Attributes[j].Value.Replace("&[年月]", getParam("&[年月]", userright, paramlist));
                    nodelist[i].Attributes[j].Value = nodelist[i].Attributes[j].Value.Replace("&[年]", getParam("&[年]", userright, paramlist));
				}
			}
		}
Exemplo n.º 7
0
 private static void SetParamData(XmlNodeList xmlNodes, User userright, NameObjectList paramlist)
 {
     string[] arrParams = leofun.getArrayFromString(prnparamlist(), ",");
     for (int i = 0; i < xmlNodes.Count; i++)
     {
         if (arrParams == null) continue;
         for (int j = 0; j < arrParams.Length; j++)
         {
             if (xmlNodes[i].InnerText==arrParams[j])
             {
                 string nval = xmlNodes[i].ChildNodes[0].InnerText.Trim();
                 string strParam = getParam(arrParams[j], userright, paramlist);
                 nval = nval.Replace(arrParams[j], strParam);
                 xmlNodes[i].ChildNodes[0].InnerText = nval;
             }
         }
     }
 }
Exemplo n.º 8
0
        public static XmlDocument makeprint(UnitItem UnitItem,XmlDocument xmlsys,string UserId)
        {
            //写入Excel的方法:
            //定义需要参数。<明细>5,2,10,15;
            string TemplatePath = HttpContext.Current.Server.MapPath(DataAccRes.AppSettings("TpFilePath"));    //存放源文件的文件夹路径。
            //初始化XML命名空间
            string nsp = "urn:schemas-microsoft-com:office:spreadsheet";
            XmlDocument xmldoc = new XmlDocument();
            try
            {
                xmldoc.Load(TemplatePath + "\\" + UnitItem.FilePrnTp);
            }
            catch
            {
                string strMSG = "请关闭正在打开的模板文件" + UnitItem.FilePrnTp + "!";
                System.Web.HttpContext.Current.Response.Write("	<script language=\"javascript\">	");
                System.Web.HttpContext.Current.Response.Write("alert('" + strMSG + "')");
                System.Web.HttpContext.Current.Response.Write("	</script>							");
                return null;
            }
            XmlNamespaceManager xmlNsmgl = new XmlNamespaceManager(xmldoc.NameTable);
            xmlNsmgl.AddNamespace("docpro", nsp);

            //读出"Cell"节点中的定义值,得到循环数据区位置值
            XmlNodeList xmlNodes = xmldoc.DocumentElement.SelectNodes("//docpro:Cell", xmlNsmgl);

            //修改:<明细>改为#dataitem name,ItemHash存贮dataitem name, 起始(行,列),列数,每页行数
            Hashtable ItemHash = PrnDataItems(xmlNodes);
            //得到模板用到的所有参数
            
            QueryDataRes query = new QueryDataRes(UnitItem.DataSrcFile);
            NameObjectList paramlist = BuildParamList.BuildParams(xmlsys);
            XmlNodeList xmlNodesRow = xmldoc.DocumentElement.SelectNodes("//docpro:Row", xmlNsmgl);
            XmlNodeList xnode = null;
            User userRight = new User(UserId);
            SetParamData(xmlNodes,userRight,paramlist);
            //先处理主表,并将主表记录做为参数记录在paramlist
            paramlist = SetMasterData(UnitItem,xmlsys,query,xmlNodes, UserId, paramlist);
            setpageSetup(xmldoc, userRight, paramlist);
            for (int i = 0; i < UnitItem.WorkItemList.Length; i++)
            {
                if (UnitItem.WorkItemList[i].ItemType == WorkItemType.MasterData) continue;
                string dataname = UnitItem.WorkItemList[i].DataSrc;
                if (ItemHash["[table]" + dataname] != null || ItemHash["[dtable]" + dataname] != null || ItemHash["[mtable]" + dataname] != null)
                {
                    DataTable oData = query.getTable(dataname, paramlist, getStrParams(xmlsys, UnitItem.WorkItemList[i]));
                    string[] arrDetail = null;
                    if(ItemHash["[table]" + dataname] != null)
                        arrDetail = leofun.getArrayFromString(ItemHash["[table]" + dataname].ToString(), ",");
                    if (ItemHash["[dtable]" + dataname] != null)
                        arrDetail = leofun.getArrayFromString(ItemHash["[dtable]" + dataname].ToString(), ",");
                    if (ItemHash["[mtable]" + dataname] != null)
                        arrDetail = leofun.getArrayFromString(ItemHash["[mtable]" + dataname].ToString(), ",");

                    int startrow = toInt(arrDetail[0]) - 1;
                    int startcol = toInt(arrDetail[1]);
                    int fldcount = toInt(arrDetail[2]);
                    int prnPageSize = toInt(arrDetail[3]);
                    
                    XmlNode rowboot = xmlNodesRow[startrow].ParentNode;

                    string[] arrfld = null;
                    arrfld = getExcelFields(xmlNodesRow[startrow]); //当为散步分布时,不能取出字段名
                    for (int m = 0; m < oData.Rows.Count; m++)
                    {if (prnPageSize == 1) continue;
                        XmlNode baknode = xmlNodesRow[startrow].CloneNode(true);
                        xnode = xmlNodesRow[startrow + m].ChildNodes;
                        for (int n = 0; n < fldcount; n++)
                            if (xnode[n].ChildNodes[0] == null) xnode[n].AppendChild(baknode.ChildNodes[n].ChildNodes[0]);
                    }
                    if ((ItemHash["[dtable]" + dataname] != null || ItemHash["[mtable]" + dataname] != null) && oData.Rows.Count>0)
                        SetMTableData(dataname, oData, xmlNodes);
                    else
                    {
                        for (int m = 0; m < oData.Rows.Count; m++)
                        {
                            xnode = xmlNodesRow[startrow + m].ChildNodes;
                            for (int n = 0; n < fldcount; n++)
                            {
                                string fldname = arrfld[n].Replace(dataname+".","");
                                //处理单表格数据
                                string valfld="";
                                if (m>oData.Rows.Count)
                                    valfld = (null == oData.Rows[m][fldname]) ? "" : oData.Rows[m][fldname].ToString();
                                switch (oData.Columns[fldname].DataType.Name)
                                {
                                    case "Double":
                                        if (valfld != "")
                                            valfld = Convert.ToDouble(valfld).ToString("#0.00");
                                        break;
                                    case "DateTime":
                                        if (valfld == "") break;
                                        valfld = Convert.ToDateTime(valfld).ToString("hh:mm");
                                        break;
                                }
                                if (xnode[n] != null && xnode[n].ChildNodes[0] != null)
                                    xnode[n].ChildNodes[0].InnerText = valfld;
                            }
                        }

                    }

                }
            }

            return xmldoc;
        }
Exemplo n.º 9
0
        /// <summary>
        /// 打印函数说明
        /// 设置说明:<明细>起始行,起始列,字段数量,分页数
        /// </summary>
        /// <param name="SourceFile">打印模板文件</param>
        /// <param name="destFile">结果存贮文件,暂无用</param>
        /// <param name="oData">打印数据明细表 DataTable</param>
        /// <param name="MData">主表 DataTable</param>
        /// <param name="mcurrow">主表当前行</param>
        /// <param name="userid">用户ID</param>
        /// <param name="paramlist">打印参数集</param>
        /// 修改:<明细>改为@dataitem name,每个记录改为@dataitem name.字段,包括合计项
        /// 对应修改:传入项为:
        /// 1 计算最多页数:分析所有DATAITEM项,根据定义的每页数量和记录总数计算出需要的总页面数,maxpage
        /// 2 开始循环,以
        ///<returns></returns>
        public static XmlDocument makeprint(WorkItem masterItem, WorkItem workitem, string SourceFile, string destFile, DataTable oData, DataTable MData, int mcurrow, string userid, NameObjectList paramlist)
		{
			//写入Excel的方法:
			//定义需要参数。<明细>5,2,10,15;

            string TemplatePath = HttpContext.Current.Server.MapPath(DataAccRes.AppSettings("TpFilePath"));    //存放源文件的文件夹路径。

			//副本的文件名,不带路径。
			string TempFileName = destFile;
			//初始化XML命名空间
			string nsp = "urn:schemas-microsoft-com:office:spreadsheet";
			XmlDocument	xmldoc=new XmlDocument();
			try
			{
				xmldoc.Load(TemplatePath+"\\"+SourceFile);
			}
			catch
			{
				string strMSG = "请关闭正在打开的模板文件"+SourceFile+"!";
				System.Web.HttpContext.Current.Response.Write("	<script language=\"javascript\">	");
				System.Web.HttpContext.Current.Response.Write("alert('"+ strMSG +"')");
				System.Web.HttpContext.Current.Response.Write("	</script>							");
				return null;
			}
			XmlNamespaceManager		xmlNsmgl=new XmlNamespaceManager(xmldoc.NameTable);
			xmlNsmgl.AddNamespace("docpro",nsp);
            User userRight = null;
            bool isbad = false;
            if (string.IsNullOrEmpty(Convert.ToString(paramlist["DWName"])))
                userRight = new User(userid, ref isbad);
			//读出"Cell"节点中的定义值,得到循环数据区位置值
			XmlNodeList	xmlNodes=xmldoc.DocumentElement.SelectNodes("//docpro:Cell",xmlNsmgl);
			//取出第一个有值单元格的数据,解读即定参数
			string[] arrPos	= leofun.getArrayFromString(xmlNodes[0].InnerText,";");
			xmlNodes[0].InnerText="";
			//得到明细的区域位置值
            //修改:<明细>改为@dataitem name
            string[] arrDetail = masterdatas(arrPos, "<明细>");
            int startrow = (arrDetail == null || arrDetail.Length < 1) ? 0 : toInt(arrDetail[0]) - 1;  //起始行号   6,2,3,23,5(并列从第5列开始第二次),8(从8列开始第三次);
            int startcol = (arrDetail == null || arrDetail.Length < 2) ? 0 : toInt(arrDetail[1]);      //起始列号
            int fldcount = (arrDetail == null || arrDetail.Length < 3) ? 0 : toInt(arrDetail[2]);      //字段数量
            int prnPageSize = (arrDetail == null || arrDetail.Length < 4) ? 0 : toInt(arrDetail[3]);   //每页行数(分页数量)
            int startcol2 = 0;
            int startcol3 = 0;
            int startcol4 = 0;
            int repeatcols = (arrDetail == null || arrDetail.Length < 3) ? 0 : (arrDetail.Length - 3);
            if(repeatcols==2) startcol2 = toInt(arrDetail[4]);
            if (repeatcols == 3)
            {
                startcol2 = toInt(arrDetail[4]);
                startcol3 = toInt(arrDetail[5]);
            }
            if (repeatcols == 4)
            {
                startcol2 = toInt(arrDetail[4]);
                startcol3 = toInt(arrDetail[5]);
                startcol4 = toInt(arrDetail[6]);
            }

			//得到模板用到的所有参数
            string sparam = "";
            if (paramlist != null)
            {
                for (int i = 0; i < paramlist.Count; i++)
                {
                    sparam = sparam + ",&[" + paramlist.AllKeys[i] + "]";
                }
            }
            
            string[] arrParams	=	leofun.getArrayFromString(prnparamlist()+sparam,",");
            string[] arrMData = masterdatas(arrPos, "<主表>");
            int EmptyCol = otherdatas(arrPos, "<空列>");
            int PrnType = otherdatas(arrPos, "<方式>");
		
            //新的处理方式:搜索参数,用数据代替

			//搜索主表及参数,用实际数据代替
			//搜索页合计及合计行,分别复制到模板node,在数据循环至该页最大行数前,算出页合计值,并插入到最后一行,同时,累计总数,插入最后行。
			//subsumNode
			//sumNode
			XmlNode subsumNode = null;
			XmlNode subgsumNode = null;
			XmlNode sumNode = null;
			XmlNode avgNode = null;

			for(int i=0;i<xmlNodes.Count;i++)
			{
				if(arrParams==null) continue;
				for(int j=0;j<arrParams.Length;j++)
				{
					if(xmlNodes[i].InnerText.IndexOf(arrParams[j])>-1)
					{
						string nval = xmlNodes[i].ChildNodes[0].InnerText.Trim();
						string strParam = getParam(arrParams[j],userRight,paramlist);
						nval = nval.Replace(arrParams[j],strParam);
						xmlNodes[i].ChildNodes[0].InnerText = nval;
					}
				}
				if(MData == null || arrMData==null) continue;
                if(mcurrow > MData.Rows.Count) mcurrow=0;
				for(int m=0;m<arrMData.Length;m++)
				{
					string strM  = arrMData[m];
					string strM1 = strM.Replace("[","");
					strM1 = strM1.Replace("]","");
					
					if(xmlNodes[i].InnerText.IndexOf(strM)>-1 || xmlNodes[i].InnerText.IndexOf(strM1)>-1) 
					{
						strM1 = strM1.Replace("#","");
						if(MData.Rows[mcurrow][strM1]==null) continue;
                        string valfld = (null == MData.Rows[mcurrow][strM1]) ? "" : MData.Rows[mcurrow][strM1].ToString();
                        string fieldname = MData.Columns[strM1].DataType.Name;
                        switch (MData.Columns[strM1].DataType.Name)
                        {
                            case "Double":
                            case "Decimal":
                                if (valfld != "")
                                {
                                    if (Convert.ToDouble(valfld) == 0) valfld = "";
                                    else
                                        valfld = Convert.ToDouble(valfld).ToString("#0.00");
                                }
                                break;
                            case "DateTime":
                                if (valfld == "") break;
                                valfld = Convert.ToDateTime(valfld).ToString("yyyy-MM-dd");

                                if (fieldname == "年" || fieldname == "年份")
                                    valfld = Convert.ToDateTime(valfld).ToString("yyyy");

                                if (fieldname.IndexOf("月份") > -1 || fieldname.IndexOf("月度") > -1 || fieldname.IndexOf("年月") > -1)
                                    valfld = Convert.ToDateTime(valfld).ToString("yyyy-MM");

                                break;
                        }

                        string str = xmlNodes[i].ChildNodes[0].InnerText.Replace(arrMData[m],valfld);
                        str = str.Replace("#", "");
						xmlNodes[i].ChildNodes[0].InnerText=str;
					}
				}
			}


			//得到循环区的节点,并替换成实际的数据
			XmlNodeList	xmlNodesRow=xmldoc.DocumentElement.SelectNodes("//docpro:Row",xmlNsmgl);
			string strExprgroup="";
			for(int i=0;i<xmlNodesRow.Count;i++)
			{
				if(xmlNodesRow[i].InnerText.IndexOf("S页合计")>-1 || xmlNodesRow[i].InnerText.IndexOf("S页合计")>-1) 
					subsumNode = xmlNodesRow[i];
				if(xmlNodesRow[i].InnerText.IndexOf("S组合计")>-1 || xmlNodesRow[i].InnerText.IndexOf("S组合计")>-1)
				{
					subgsumNode = xmlNodesRow[i];
					for(int j=0; j<subgsumNode.ChildNodes.Count; j++)
					{
						if(subgsumNode.ChildNodes[j].InnerText.IndexOf("S组合计:")>-1)
						{
							string[] arrSUMCndition = leofun.getArrayFromString(subgsumNode.ChildNodes[j].InnerText,";");
							for(int m=0; m<arrSUMCndition.Length;m++)
							{
								if(arrSUMCndition[m].IndexOf("<范围>")>-1)
									strExprgroup = arrSUMCndition[m].Replace("<范围>","");
							}
						}
					}
					
				}
                if (xmlNodesRow[i].InnerText.IndexOf("S合计:") > -1 || xmlNodesRow[i].InnerText.IndexOf("S合计:")>-1 || xmlNodesRow[i].InnerText.IndexOf("S合计") > -1)
					sumNode    = xmlNodesRow[i];
				else if(xmlNodesRow[i].InnerText.IndexOf("S平均值:")>-1 || xmlNodesRow[i].InnerText.IndexOf("S平均值:")>-1)
					avgNode    = xmlNodesRow[i];
			}
			
			
			//获的合计分组条件:
			strExprgroup = strExprgroup.Replace(" ","").Trim();
			strExprgroup = strExprgroup.Replace("[","");
			strExprgroup = strExprgroup.Replace("]","");
			string[] arrExprgroup		=	leofun.getArrayFromString(strExprgroup,",");
			string[] arrExprgroup_field =	null;
			string[] arrExprgroup_val	=	null;
			if(arrExprgroup!=null)
			{
				arrExprgroup_field =	new string[arrExprgroup.Length];
				arrExprgroup_val	=	new string[arrExprgroup.Length];
				for(int i=0;i<arrExprgroup.Length;i++)
				{
					string[] arr=leofun.getArrayFromString(arrExprgroup[i],"=");
					arrExprgroup_field[i]	=	arr[0];
					arrExprgroup_val[i]		=	arr[1];
				}
			}
			//
			xmlNodesRow=xmldoc.DocumentElement.SelectNodes("//docpro:Row",xmlNsmgl);
			if(xmlNodesRow[startrow]==null)
			{
				string strMSG = "起始行="+(startrow+1).ToString()+" 引起字段定位错误: !";
				System.Web.HttpContext.Current.Response.Write("	<script language=\"javascript\">	");
				System.Web.HttpContext.Current.Response.Write("alert('"+ strMSG +"')");
				System.Web.HttpContext.Current.Response.Write("	</script>							");				
				return null;	          		
			}
			XmlNode rowboot = xmlNodesRow[startrow].ParentNode;
			
			string[] arrfld		= null;
			string[] arrsubsumfld	= null;
			string[] arrsubgsumfld	= null;
			string[] arrsumfld	= null;
			string[] arravgfld	= null;

            arrfld = getExcelFields(xmlNodesRow[startrow]);
            if (subsumNode != null) arrsubsumfld = getExcelFields(subsumNode);
            if (subgsumNode != null) arrsubgsumfld = getExcelFields(subgsumNode);
            if (sumNode != null) arrsumfld = getExcelFields(sumNode);
            if (avgNode != null) arravgfld = getExcelFields(avgNode);

			//定义分页行
			string pagebreakRows=""; 
			//写明细数据,返回插入的辅助行数
			int seprow = 0;
			int xmod=0;

            int printnum = 0;
            if(prnPageSize!=0)
                printnum = (oData == null) ? 0 : oData.Rows.Count + (prnPageSize - ((oData == null) ? 0 : oData.Rows.Count) % prnPageSize);
            if (repeatcols > 1) printnum = prnPageSize;
			if(PrnType!=1)
			{
                for (int i = 1; i < printnum; i++)
				{
					XmlNode baknode = xmlNodesRow[startrow].CloneNode(true);
					int icurrow = startrow + i + seprow -1 ;
					rowboot.InsertAfter(baknode,xmlNodesRow[icurrow]);
					xmod = (i+1) % prnPageSize;
                    if(i == printnum + seprow -1) break;
					if(xmod==0 && i!=0)
					{
						if(subsumNode!=null)
						{
							XmlNode xsub = subsumNode.Clone();
							rowboot.InsertAfter(xsub,xmlNodesRow[startrow+i+seprow]);
							seprow=seprow+1;
						}
						int pagenum = startrow+seprow + i + 1 ;
						pagebreakRows = pagebreakRows + ";" + pagenum.ToString();
					}
				}
			}
			//建立分页
			if(pagebreakRows.Length>0)
			{
				pagebreakRows = pagebreakRows.Remove(0,1);
				creatpagebreak(pagebreakRows,xmldoc);
			}

			XmlNodeList xnode = null;

			//初始化合计数组
			double[] sumfld		= null;
			double[] subsumfld	= null;
			double[] avgfld		= null;
			double[] subgsumfld	= null;
			if(arrsumfld!=null)
			{
				sumfld			= new double[arrsumfld.Length];
				for(int i=0;i<arrsumfld.Length;i++) sumfld[i]=0.0;
			}

			if(arravgfld!=null)
			{
				sumfld			= new double[arravgfld.Length];
				for(int i=0;i<arravgfld.Length;i++) sumfld[i]=0.0;
			}

			if(arrsubsumfld!=null) 
			{
				subsumfld		= new double[arrsubsumfld.Length];
				for(int i=0;i<arrsubsumfld.Length;i++) subsumfld[i]=0;
			}
			if(arrsubgsumfld!=null)
			{
				subgsumfld		= new double[arrsubgsumfld.Length];
				for(int i=0;i<arrsubgsumfld.Length;i++) subgsumfld[i]=0.0;
			}
				

			string fldname="";

			//取最大的数据记录数量
			int rowcount=prnPageSize;
			if(prnPageSize < ((oData==null)?0:oData.Rows.Count)) rowcount=(oData==null)?0:oData.Rows.Count;
            rowcount = printnum;
			seprow =0;
            if (repeatcols > 1) rowcount = prnPageSize;
            //如果多列打印,则最大循环行数为分页数
            for (int ir = 0; ir < repeatcols; ir++)
            {
                for (int i = 0; i < rowcount; i++)
                {
                    //ROW为空时,中断循环
                    switch (ir)
                    {
                        case 2: EmptyCol = ir * EmptyCol;
                            break;
                        case 3: EmptyCol = ir * EmptyCol;
                            break;
                        case 4: EmptyCol = ir * EmptyCol;
                            break;
                    }
                    int idata = (i + ir * prnPageSize);
                    if (xmlNodesRow[startrow + i + seprow] == null) break;
                    //如果存在页合计
                    if (xmlNodesRow[startrow + i + seprow].InnerText.IndexOf("S页合计") > -1
                        || xmlNodesRow[startrow + i + seprow].InnerText.IndexOf("S组合计") > -1)
                    {
                        //写入页合计:
                        if (arrsubsumfld != null)
                        {
                            setsummary(startrow + i + seprow - prnPageSize, startrow + i + seprow, xmlNodesRow, 
                                "S页合计", subsumfld, arrsubsumfld, oData);
                            //页合计清0
                            for (int k = 0; k < arrsubsumfld.Length; k++) subsumfld[k] = 0;
                        }

                        if (arrsubgsumfld != null)
                        {
                            setsummary(startrow + i + seprow - prnPageSize, startrow + i + seprow, xmlNodesRow,
                                "S组合计", subgsumfld, arrsubgsumfld, oData);
                            //组合计清0
                            for (int k = 0; k < arrsumfld.Length; k++) subgsumfld[k] = 0;
                        }
                        seprow = seprow + 1;
                        //列数
                        xnode = xmlNodesRow[startrow + i + seprow].ChildNodes;
                        if (fldcount > xnode.Count) fldcount = xnode.Count;
                        for (int j = 0 + ir * fldcount; j < (ir+1) * fldcount - EmptyCol; j++)
                        {
                            fldname = xnode[j + EmptyCol].InnerText.ToString().Trim();
                            if (fldname == "序号") {
                                xnode[j + EmptyCol].ChildNodes[0].InnerText=(idata + 1).ToString(); 
                                fldname = "SN"; 
                            }
                            for (int ic = 0; ic < ((oData==null)?0:oData.Columns.Count); ic++)
                            {
                                string strColumnName = oData.Columns[ic].ColumnName;
                                if (fldname == strColumnName) break;
                                else if (ic == oData.Columns.Count - 1) fldname = "";
                            }

                            if (fldname == "") continue;
                            string valfld = "";
                            string fm = "";
                            if (i < rowcount)
                            {
                                valfld = (oData==null || null == oData.Rows[idata][fldname]) ? "" : oData.Rows[idata][fldname].ToString();
                                switch ((oData==null)?"":oData.Columns[fldname].DataType.Name)
                                {
                                    case "Double":
                                    case "Decimal":

                                        if (valfld != "")
                                        {
                                            if (workitem != null)
                                            {
                                                for (int ix = 0; ix < workitem.DictCol.Length; ix++)
                                                {
                                                    if (fldname == workitem.DictCol[ix].ColumnName && workitem.DictCol[ix].Formate != "")
                                                    { fm = workitem.DictCol[ix].Formate; break; }
                                                }
                                            }
                                            if (fm != "" && fm.IndexOf(".") > -1)
                                            {
                                                fm = fm.Substring(fm.IndexOf(".") + 1, fm.Length - fm.IndexOf(".") - 1);
                                                if (fm.Length > 0)
                                                    valfld = Convert.ToDouble(valfld).ToString("#0." + fm);
                                                else
                                                    valfld = Convert.ToDouble(valfld).ToString("#0");
                                            }
                                            else
                                                valfld = Convert.ToDouble(valfld).ToString("#0.00");
                                            if (Convert.ToDouble(valfld) == 0) valfld = "";

                                        }
                                        break;
                                    case "DateTime":
                                        if (valfld == "") break;
                                        if (fldname == "年" || fldname == "年份")
                                        {
                                            valfld = Convert.ToDateTime(valfld).ToString("yyyy"); break;
                                        }

                                        if (fldname.IndexOf("月份") > -1 || fldname.IndexOf("月度") > -1 || fldname.IndexOf("年月") > -1)
                                        { valfld = Convert.ToDateTime(valfld).ToString("yyyy-MM"); break; }
                                        if (workitem != null)
                                        {
                                            for (int ix = 0; ix < workitem.DictCol.Length; ix++)
                                            {
                                                if (fldname == workitem.DictCol[ix].ColumnName && workitem.DictCol[ix].Formate != "")
                                                { fm = workitem.DictCol[ix].Formate; break; }
                                            }
                                        }
                                        if (fm != "")
                                            valfld = Convert.ToDateTime(valfld).ToString(fm);
                                        //valfld = Convert.ToDateTime(valfld).ToString("yyyy-MM-dd hh:mm:ss");
                                        else
                                            valfld = Convert.ToDateTime(valfld).ToString("yyyy-MM-dd");

                                        break;
                                }
                            }

                            if (valfld.Trim().Length == 0) xnode[j + EmptyCol].ChildNodes[0].InnerText = " ";
                            else xnode[j + EmptyCol].ChildNodes[0].InnerText = valfld;

                            if (EmptyCol == 0)
                            {
                                if (xnode[0].ChildNodes[0].InnerText == "序号")
                                    xnode[0].ChildNodes[0].InnerText = (i + 1).ToString();
                            }
                            else if (xnode[EmptyCol - 1].ChildNodes[0] != null)
                            {
                                if (xnode[EmptyCol - 1].ChildNodes[0].InnerText == "序号")
                                    xnode[EmptyCol - 1].ChildNodes[0].InnerText = (i + 1).ToString();
                            }
                            //计算合计
                            if (i > rowcount) continue;

                            if (arrsumfld != null)
                            {
                                for (int m = 0; m < arrsumfld.Length; m++)
                                {
                                    if (fldname != arrsumfld[m]) continue;
                                    if (valfld == null || valfld == "")
                                        valfld = "0";
                                    sumfld[m] = sumfld[m] + double.Parse(valfld);
                                    if (subsumfld != null) subsumfld[m] = subsumfld[m] + double.Parse(valfld);
                                    if (subgsumfld != null)
                                    {
                                        if (oData.Columns["分类"] != null)
                                            if (null != oData.Rows[idata]["分类"] && oData.Rows[idata]["分类"].ToString() == "总计")
                                                subsumfld[m] = subsumfld[m] + double.Parse(valfld);
                                            else
                                                subgsumfld[m] = subgsumfld[m] + double.Parse(valfld);
                                    }
                                }
                            }
                            else
                                if (arrsubsumfld != null)
                                {
                                    for (int m = 0; m < arrsubsumfld.Length; m++)
                                    {
                                        if (fldname != arrsubsumfld[m]) continue;
                                        if (valfld == null || valfld == "")
                                            valfld = "0";
                                        sumfld[m] = sumfld[m] + double.Parse(valfld);
                                        if (subsumfld != null) subsumfld[m] = subsumfld[m] + double.Parse(valfld);
                                        if (subgsumfld != null)
                                        {
                                            if (oData.Columns["分类"] != null)
                                                if (null != oData.Rows[idata]["分类"] && oData.Rows[idata]["分类"].ToString() == "总计")
                                                    subsumfld[m] = subsumfld[m] + double.Parse(valfld);
                                                else
                                                    subgsumfld[m] = subgsumfld[m] + double.Parse(valfld);
                                        }
                                    }
                                }
                        }
                    }
                    else
                    {
                        xnode = xmlNodesRow[startrow + i + seprow].ChildNodes;
                        if (fldcount > xnode.Count) fldcount = xnode.Count;
                        for (int j = 0 + ir * fldcount; j < (ir + 1) * fldcount - EmptyCol; j++)
                        {
                            fldname = xnode[j + EmptyCol].InnerText.ToString().Trim();
                            if (fldname == "序号")
                            {
                                xnode[j + EmptyCol].ChildNodes[0].InnerText = (idata + 1).ToString();
                                fldname = "SN";
                            }

                            for (int ic = 0; ic < oData.Columns.Count; ic++)
                            {
                                string strColumnName = oData.Columns[ic].ColumnName;
                                if (fldname == strColumnName)
                                    break;
                                else if (ic == oData.Columns.Count - 1)
                                    fldname = "";
                            }
                            if (fldname == "") continue;
                            string valfld = "";
                            string fm = "";
                            if (i < rowcount)
                            {
                                if (idata > oData.Rows.Count - 1) valfld = "";
                                else
                                    valfld = (null == oData.Rows[idata][fldname]) ? "" : oData.Rows[idata][fldname].ToString();
                                switch (oData.Columns[fldname].DataType.Name)
                                {
                                    case "Double":
                                    case "Decimal":

                                        if (valfld != "")
                                        {
                                            if (workitem != null)
                                            {
                                                for (int ix = 0; ix < workitem.DictCol.Length; ix++)
                                                {
                                                    if (fldname == workitem.DictCol[ix].ColumnName && workitem.DictCol[ix].Formate != "")
                                                    { fm = workitem.DictCol[ix].Formate; break; }
                                                }
                                            }
                                            if (fm != "" && fm.IndexOf(".") > -1)
                                            {
                                                fm = fm.Substring(fm.IndexOf(".") + 1, fm.Length - fm.IndexOf(".") - 1);
                                                if (fm.Length > 0)
                                                    valfld = Convert.ToDouble(valfld).ToString("#0." + fm);
                                                else
                                                    valfld = Convert.ToDouble(valfld).ToString("#0");
                                            }
                                            else
                                                valfld = Convert.ToDouble(valfld).ToString("#0.00");
                                            if (Convert.ToDouble(valfld) == 0) valfld = "";

                                        }
                                        break;
                                    case "DateTime":
                                        if (valfld == "") break;
                                        if (fldname == "年" || fldname == "年份")
                                        {
                                            valfld = Convert.ToDateTime(valfld).ToString("yyyy"); break;
                                        }

                                        if (fldname.IndexOf("月份") > -1 || fldname.IndexOf("月度") > -1 || fldname.IndexOf("年月") > -1)
                                        { valfld = Convert.ToDateTime(valfld).ToString("yyyy-MM"); break; }
                                        if (workitem != null)
                                        {
                                            for (int ix = 0; ix < workitem.DictCol.Length; ix++)
                                            {
                                                if (fldname == workitem.DictCol[ix].ColumnName && workitem.DictCol[ix].Formate != "")
                                                { fm = workitem.DictCol[ix].Formate; break; }
                                            }
                                        }
                                        if (fm != "")
                                            valfld = Convert.ToDateTime(valfld).ToString(fm);
                                        //valfld = Convert.ToDateTime(valfld).ToString("yyyy-MM-dd hh:mm:ss");
                                        else
                                            valfld = Convert.ToDateTime(valfld).ToString("yyyy-MM-dd");

                                        break;
                                }
                            }

                            if (valfld.Trim().Length == 0) xnode[j + EmptyCol].ChildNodes[0].InnerText = " ";
                            else xnode[j + EmptyCol].ChildNodes[0].InnerText = valfld;

                            if (EmptyCol == 0)
                            {

                                if (xnode[0].ChildNodes[0].InnerText == "序号")
                                    xnode[0].ChildNodes[0].InnerText = (i + 1).ToString();
                            }
                            else if (xnode[EmptyCol - 1].ChildNodes[0] != null)
                            {
                                if (xnode[EmptyCol - 1].ChildNodes[0].InnerText == "序号")
                                    xnode[EmptyCol - 1].ChildNodes[0].InnerText = (i + 1).ToString();
                            }
                            //计算合计
                            if (i >= rowcount) continue;
                            if (arrsumfld != null)
                            {
                                for (int m = 0; m < arrsumfld.Length; m++)
                                {
                                    if (fldname == arrsumfld[m])
                                    {
                                        if (valfld == null || valfld == "")
                                            valfld = "0";
                                        sumfld[m] = sumfld[m] + double.Parse(valfld);
                                        if (subsumfld != null) subsumfld[m] = subsumfld[m] + double.Parse(valfld);
                                        if (subgsumfld != null && arrExprgroup_field != null)
                                        {

                                            if (arrExprgroup_field.Length == 1)
                                                if (null != oData.Rows[idata][arrExprgroup_field[0]] && oData.Rows[idata][arrExprgroup_field[0]].ToString() == arrExprgroup_val[0])
                                                    subgsumfld[m] = subgsumfld[m] + double.Parse(valfld);

                                            if (arrExprgroup_field.Length == 2)
                                                if ((null != oData.Rows[idata][arrExprgroup_field[0]] && oData.Rows[idata][arrExprgroup_field[0]].ToString() == arrExprgroup_val[0]) ||
                                                    (null != oData.Rows[idata][arrExprgroup_field[1]] && oData.Rows[idata][arrExprgroup_field[1]].ToString() == arrExprgroup_val[1]))
                                                    subgsumfld[m] = subgsumfld[m] + double.Parse(valfld);
                                        }
                                    }
                                }
                            }
                            else
                                if (arravgfld != null)
                                {
                                    for (int m = 0; m < arravgfld.Length; m++)
                                    {
                                        if (fldname == arravgfld[m])
                                        {
                                            if (valfld == null || valfld == "") valfld = "0";
                                            sumfld[m] = sumfld[m] + double.Parse(valfld);
                                            if (subsumfld != null) subsumfld[m] = subsumfld[m] + double.Parse(valfld);
                                            if (subgsumfld != null && arrExprgroup_field != null)
                                            {
                                                if (arrExprgroup_field.Length == 1)
                                                    if (null != oData.Rows[idata][arrExprgroup_field[0]] && oData.Rows[idata][arrExprgroup_field[0]].ToString() == arrExprgroup_val[0])
                                                        subgsumfld[m] = subgsumfld[m] + double.Parse(valfld);

                                                if (arrExprgroup_field.Length == 2)
                                                    if ((null != oData.Rows[idata][arrExprgroup_field[0]] && oData.Rows[idata][arrExprgroup_field[0]].ToString() == arrExprgroup_val[0]) ||
                                                         (null != oData.Rows[idata][arrExprgroup_field[1]] && oData.Rows[idata][arrExprgroup_field[1]].ToString() == arrExprgroup_val[1]))
                                                        subgsumfld[m] = subgsumfld[m] + double.Parse(valfld);
                                            }
                                        }
                                    }
                                }

                        }
                    }
                }
            }

			if(subsumfld!=null)
			{
				//置入最后一个分页合计
                setsummary(startrow + printnum + seprow - 1, xmlNodesRow.Count - 1, xmlNodesRow, "S页合计", subsumfld, arrsubsumfld, oData);
			}

			if(subgsumfld!=null)
			{
				//置入最后一个分组合计
                setsummary(startrow + printnum + seprow - 1, xmlNodesRow.Count - 1, xmlNodesRow, "S组合计", subgsumfld, arrsubgsumfld, oData);
			}
			
			if(sumfld!=null)
			{
				//置入合计项
                setsummary(startrow + printnum + seprow, xmlNodesRow.Count - 1, xmlNodesRow, "S合计", sumfld, arrsumfld, oData);
			}

			if(sumfld!=null)
			{
				//置入平均值
                setsummary(startrow + printnum + seprow, xmlNodesRow.Count - 1, xmlNodesRow, "S平均值", sumfld, arravgfld, oData);
			}

			//得到Table节点的ss:ExpandedRowCount属性,随着循环区行数的增加页增值
            if (startrow != 0)
            {
                XmlNode xn = xmldoc.DocumentElement.SelectSingleNode("//docpro:Table", xmlNsmgl);
                xn.Attributes["ss:ExpandedRowCount"].Value = Convert.ToString((Convert.ToInt32(xn.Attributes["ss:ExpandedRowCount"].Value) + printnum + seprow - 1));
            }
			//给<PageSetup>赋值
            
			setpageSetup(xmldoc,userRight,paramlist);
			//string DownloadFilePath=DownloadPath+"\\"+destFile;
			//string strpath= "ExcelDownload/"+TempFileName;
			//outXML2Excel(xmldoc,"print.xls");
			return xmldoc;
			

		}
Exemplo n.º 10
0
 /// <summary>
 /// 加载主页面,动态生成主菜单(门禁系统,考勤系统,停车场,消费系统)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void FrmMain_Load(object sender, EventArgs e)
 {
     user = BindManager.getUser();
     if (null == user.DsDeptRight || user.DsDeptRight.Tables.Count < 1)
         return;
     DataTable tab = user.DsDeptRight.Tables[0];
     DataRow[] drs = tab.Select("ntype='操作集组' and level=2");
     int indexPic = -1;
     foreach (DataRow dr in drs)
     {
         if ("系统配置".Equals(dr["name"]))
             continue;
         indexPic++;
         DevExpress.XtraBars.BarLargeButtonItem bar = new DevExpress.XtraBars.BarLargeButtonItem();
         bar.Caption = Convert.ToString(dr["text"]);
         bar.CaptionAlignment = DevExpress.XtraBars.BarItemCaptionAlignment.Right;
         bar.Name = basefun.valtag(Convert.ToString(dr["ntag"]), "name");
         bar.Tag = "@id=" + Convert.ToString(dr["ID"]) + "," + Convert.ToString(dr["ntag"]);
         bar.Id = this.barMgr.GetNewItemId();
         bar.LargeGlyph = this.imageBar.Images[indexPic];
         bar.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(barMenu_Click);
         this.barMain.AddItem(bar);
         this.barMgr.Items.Add(bar);
     }
     if (this.barMain.ItemLinks.Count > 0)
     {
         BarItem item = this.barMain.ItemLinks[0].Item;
         item.Enabled = false;
         BarMenuClick(item);
     }
 }
Exemplo n.º 11
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (Session["userid"] == null)
     {
         this.Response.Write("<script language=\"javascript\">");
         this.Response.Write("alert('您未正常登录,请登录后再使用,谢谢!')");
         this.Response.Write("</script>");
         this.Response.Redirect("index.htm");
     }
     string[] strsqls = (this.Request.QueryString["sql"] == null) ? null : this.Request.QueryString["sql"].Split(';');
     string prnname = this.Request.QueryString["prn"];
     string prntype = this.Request.QueryString["prntype"];
     string prnpms = this.Request.QueryString["pms"];
     string relation = this.Request.QueryString["relation"];
     NameObjectList paramlist = new NameObjectList();
     string[] parammacro = { "10", "0", "", "", "", "", "", "", "" };
     if (prnpms != null)
     {
         paramlist = createParam(prnpms);
         parammacro = createMacro(prnpms);
     }
     string[] prndatasrcs = null;
     if (this.Request.QueryString["datasrc"] != null)
         prndatasrcs = this.Request.QueryString["datasrc"].Split(';');
     if (prntype == null) prntype = "excel";
     if (prndatasrcs == null) prndatasrcs = new String[] { "table" };
     string strCn = DataAccRes.DefaultDataConnInfo.Value;
     DataSet ds = new DataSet();
     //初始化连接字符串
     if (strsqls != null && strsqls.Length > 0)
     {
         SqlConnection CN = new SqlConnection();
         try
         {
             CN.ConnectionString = strCn;
             CN.Open();
             for (int i = 0; i < strsqls.Length; i++)
             {
                 if (strsqls[i] == "") continue;
                 SqlDataAdapter adp = new SqlDataAdapter(strsqls[i], CN);
                 adp.Fill(ds, prndatasrcs[i]);
             }
             CN.Close();
         }
         catch (Exception ex)
         {
             if (CN.State == ConnectionState.Open) CN.Close();
             this.Response.Write("");
             return;
         }
     }
     else if (null != prndatasrcs && prndatasrcs.Length > 0)
     {
         QueryDataRes query = null;
         for (int i = 0; i < prndatasrcs.Length; i++)
         {
             if (string.IsNullOrEmpty(prndatasrcs[i]))
                 continue;
             string[] src = prndatasrcs[i].Split(".".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
             if (src.Length < 2)
                 continue;
             query = new QueryDataRes(src[0]);
             query.FillDataSet(src[1], paramlist, parammacro, ds);
         }
     }
     if (!ds.Tables.Contains("参数表"))
     {
         User user = new User(Convert.ToString(Session["userid"]));
         string[,] colmap = { { "公司名称", user.Company }, { "部门代码", user.DeptmentCode }, { "部门名称", user.DeptmentName }, 
                              { "上级部门", user.DeptSup }, { "单位名称", user.UnitName }, { "用户名称", user.UserName } };
         for (int i = 0; i < colmap.GetLength(0); i++)
         {
             if (null == paramlist[colmap[i, 0]])
                 paramlist[colmap[i, 0]] = colmap[i, 1];
         }
         DataTable tabm = new DataTable("参数表");
         foreach (string key in paramlist.AllKeys)
             tabm.Columns.Add(key);
         DataRow drm = tabm.NewRow();
         foreach (string key in paramlist.AllKeys)
             drm[key] = Convert.ToString(paramlist[key]);
         tabm.Rows.Add(drm);
         ds.Tables.Add(tabm);
     }
     //表关系:master.col~child.col;
     if (!string.IsNullOrEmpty(relation))
     {
         string[] relts = relation.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
         for (int i = 0; i < relts.Length; i++)
         {
             string[] rlt = relts[i].Split("~".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
             if (rlt.Length < 2) continue;
             string[] rltm = rlt[0].Split(".".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
             string[] rltd = rlt[1].Split(".".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
             if (!ds.Tables.Contains(rltm[0]) || !ds.Tables.Contains(rltd[0]))
                 continue;
             if (!ds.Tables[rltm[0]].Columns.Contains(rltm[1]) || !ds.Tables[rltd[0]].Columns.Contains(rltd[1]))
                 continue;
             DataTable tabm = ds.Tables[rltm[0]];
             DataTable tabd = ds.Tables[rltd[0]];
             tabm.ChildRelations.Add(tabm.Columns[rltm[1]], tabd.Columns[rltd[1]]);
         }
     }
     string SourceFile = prnname;
     string TemplatePath = this.Server.MapPath(DataAccRes.AppSettings("TpFilePath"));    //存放源文件的文件夹路径。
     string SrcFile = TemplatePath + SourceFile; //源文件名称
     string DestFile = "print.XLS";
     if (!string.IsNullOrEmpty(SourceFile) && !File.Exists(SrcFile))
     {
         string strMSG = "打印模板 [" + SourceFile + "] 不存在,请联系系统管理员建立打印模板!";
         this.Response.Write("<script language=\"javascript\">");
         this.Response.Write("alert('" + strMSG + "')");
         this.Response.Write("</script>");
         return;
     }
     switch (prntype)
     {
         case "word":
             PrintWord printdoc = new PrintWord();
             printdoc.TemplateFileName = SrcFile;
             printdoc.DataSource = ds;
             printdoc.DataBind();
             printdoc.RemoveXmlLable();
             csPrint.outXML2Word(printdoc.PrintXmlDoc, "print.doc");
             break;
         case "excel":
             //DataTable tab = (ds.Tables.Count == 0) ? null : ds.Tables[0];
             //XmlDocument xmlPrintDoc = csPrintData.makeprint(null, null, SourceFile, DestFile, tab, tab, 0, this.Session["userid"].ToString(), paramlist);
             if (string.IsNullOrEmpty(SourceFile) || !File.Exists(SrcFile))
             {
                 SrcFile = "";
                 ds.Tables.Remove("参数表");
             }
             PrintExcel printexcel = new PrintExcel();
             printexcel.DataSource = ds;
             printexcel.TemplateFileName = SrcFile;
             printexcel.DataBind();
             csPrintData.outXML2Excel(printexcel.PrintXmlDoc, DestFile);
             break;
         case "html":
             break;
     }
 }
Exemplo n.º 12
0
        /// <summary>
        /// 数据更新,带有权限的更新,并设置是否清除数据状态
        /// </summary>
        /// <param name="bIsReset">是否重置状态</param>
        /// <param name="currentUser">当前的权限用户</param>
        /// <returns></returns>
        public override bool Update(bool bIsReset, User currentUser)
        {
            BasePage page = this.Page as BasePage;
            NameObjectList[] paramInsList = this.CreateInsParamLists();
            NameObjectList[] paramUptList = this.CreateUptParamLists();
            NameObjectList[] paramDelList = this.CreateDelParamLists();

            if (!currentUser.HasRight(page.PgUnitName, OperationType.Insert) && paramInsList.Length > 0)
                throw (new Exception("您没有增加权限!"));
            if (!currentUser.HasRight(page.PgUnitName, OperationType.Delete) && paramDelList.Length > 0)
                throw (new Exception("您没有删除权限!"));
            if (!currentUser.HasRight(page.PgUnitName, OperationType.Update) && paramUptList.Length > 0)
                throw (new Exception("您没有修改权限!"));

            bool bSuccess = page.PgQuery.ExecuteNonQuery(this.CtrlWorkItem.DataSrc, paramInsList, paramUptList, paramDelList, this.getStrParams());
            if (false == bSuccess)
                throw (new Exception("保存项目失败:请检查配置和错误日志!"));
            if (bIsReset) this.ResetState();
            return true;
        }
Exemplo n.º 13
0
        /// <summary>
        /// 用户登录
        /// </summary>
        protected void Login()
        {
            string strModel = this.Request.Form["hlbModel"];
            //会话切换帐套
            if (!string.IsNullOrEmpty(strModel))
                this.Session["AppModel"] = strModel;
            //系统切换帐套
            if (!string.IsNullOrEmpty(strModel))
                DataAccRes.SwitchModelConfig(strModel);
            srvWeather srv = new srvWeather();
            /*
            string strMsg = this.validateCode();
            if ("" != strMsg)
            {
                this.Response.Write(strMsg);
                return;
            }
             */
            if(null!=this.Request.ServerVariables["http_referer"])
                if (!this.Request.ServerVariables["http_referer"].Contains(this.Request.ServerVariables["server_name"]))
                {
                    this.Response.Write("严禁外部提交数据!");
                    return;
                }
            HttpCookie cookieUser = this.Request.Cookies["userid"];
            HttpCookie cookieKey = this.Request.Cookies["erpkey"];
            HttpCookie cookieVali = this.Request.Cookies["vali"];
            string strUserAccounts = (cookieUser==null)?"":cookieUser.Value;
            string strPassword = (cookieKey == null) ? "" : cookieKey.Value;

            //string strUserAccounts = this.Request.QueryString["user"];
            //string strPassword = this.Request.QueryString["key"];

            //string strUserAccounts = this.Request.Form["tbUserAccount"];
            //string strPassword = this.Request.Form["tbPassword"];
            if (Request.Cookies["userid"] != null)
            {
                HttpCookie myCookie = new HttpCookie("userid");
                myCookie.Expires = DateTime.Now.AddDays(-1d);
                Response.Cookies.Add(myCookie);
                myCookie = new HttpCookie("erpkey");
                myCookie.Expires = DateTime.Now.AddDays(-1d);
                Response.Cookies.Add(myCookie);
            }
            string regBtn = "";
            if (this.Request.Form.AllKeys.Length == 5) regBtn = this.Request.Form.AllKeys[5];
            if (regBtn!=null && regBtn.IndexOf("btTest") > -1)
            {
                //设置一个缺省用户:名称:注册,帐号:register,密码:reg
                //给用户名和密码直接赋值
                strUserAccounts = "register";
                strPassword = "******";
            }

            Boolean blBad = false;
            User user = new User(strUserAccounts,true,ref blBad);
            if (blBad == true)
            {
                this.Response.Write("dberror");
                return;
            }
            if (strUserAccounts == "test")
            {
                this.Response.Redirect("testform.htm");
                return;
            }

            if ((strUserAccounts != "12345678" || !user.IfFirstLogin()) && user.login(strPassword))
            {
                if (!user.VisitOut && ("127.0.0.1" != this.Request.UserHostAddress && "::1" != this.Request.UserHostAddress))
                {
                    IPAddress[] ipAddressList = Dns.GetHostAddresses(Dns.GetHostName());
                    int i = 0;
                    for (; i < ipAddressList.Length; i++)
                        if (this.Request.UserHostAddress.Contains(ipAddressList[i].ToString().Substring(0, 8)))
                            break;
                    if (i >= ipAddressList.Length)
                    {
                        this.Response.Write("<script language=\"javascript\">alert(\"该用户不允许公网访问!\");</script>");
                        this.Response.Write("该用户不允许公网访问!");
                        return;
                    }
                }
                this.Session["userid"] = user.UserAccounts;
                this.Session["userkey"] = strPassword;
                if (strUserAccounts == "register") 
                    this.Response.Redirect("WfMain.aspx");
                if (DataAccRes.AppSettings("screentype") == "cs")
                    this.Response.Write("<script language=\"javascript\">window.opener=null;window.open('', '_self');window.close();window.open('wfmain.aspx','','height='+(690)+',width='+(1014)+',left=0,top=0,status=yes,toolbar=no,menubar=no,resizable=yes,center:yes')</script>");
                else
                    this.Response.Write("WfMain.aspx");
                    //this.Response.Redirect("WfMain.aspx");
            }
            else if (user.IfFirstLogin() && strUserAccounts == "12345678")
            {
                //如果是第一次使用本系统,则返回true,用admin,123登录系统
                this.Session["userid"] = "12345678";
                this.Response.Redirect("WfMain.aspx");
                if (DataAccRes.AppSettings("screentype") == "cs")
                    this.Response.Write("<script language=\"javascript\">window.opener=null;window.open('', '_self');window.close();window.open('wfmain.aspx','','height='+(screen.height-78)+',width='+(screen.width-10)+',left=0,top=0,status=yes,toolbar=no,menubar=no;')</script>");
                else
                    this.Response.Redirect("WfMain.aspx");
            }
            else
            {
                //this.Response.Write("error");
                this.Response.Write("没有此帐号或口令错误!");
            }
            
        }
Exemplo n.º 14
0
 /// <summary>
 /// 设置全局当前用户
 /// </summary>
 /// <param name="userid">用户ID</param>
 /// <returns>用户实例</returns>
 public static User setUser(string userid)
 {
     return BindManager.user = new User(userid);
 }
Exemplo n.º 15
0
        /// <summary>
        /// 确定交班
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tbOK_Click(object sender, EventArgs e)
        {
            bool isNotExist = false;
            string user = Convert.ToString(this.ccbNextUser.Text);
            string pws = this.tbPassword.Text;
            if (string.IsNullOrEmpty(user) || string.IsNullOrEmpty(pws))
            {
                MessageBox.Show("请选择接班人和输入接班人密码!", "接班提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            this.paramwin["交班人"] = BindManager.getUser().UserAccounts;
            this.paramwin["密码"] = pws;

            User user1 = new User(user, ref isNotExist);
            if (!isNotExist)
                isNotExist = !user1.login(tbUserName.Text, pws);
            if (isNotExist)
            {
                MessageBox.Show("密码不正确!", "系统提示");
                return;
            }
            QueryDataRes query = new QueryDataRes(this.unitItem.DataSrcFile);
            this.paramwin["操作员"] = BindManager.getUser().UserName;
            this.paramwin["值班人"] = ccbNextUser.Text;
            IPHostEntry IpEntry = Dns.GetHostEntry(Dns.GetHostName());
            string myip = IpEntry.AddressList[0].ToString();
            this.paramwin["电脑IP"] = myip;
            bool isSuccess = query.ExecuteNonQuery("交接班", this.paramwin, this.paramwin, this.paramwin);
            if (!isSuccess)
            {
                MessageBox.Show("执行交接班时失败请与管理员联系!", "接班提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            BindManager.setUser(user);
            string operName = this.ccbNextUser.Text.Trim();
            string workStartTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            string ip = this.paramwin.AllValues.GetValue(2).ToString();
            string tag = string.Empty;
            tag = basefun.setvaltag(tag, "值班人", operName);
            tag = basefun.setvaltag(tag, "接班时间", workStartTime);
            tag = basefun.setvaltag(tag, "电脑IP", ip);
            NameObjectList ps = ParamManager.createParam(tag);
            ParamManager.MergeParam(ps, this.paramwin, false);
            query.ExecuteNonQuery("当班状态", ps, ps, ps);
            MessageBox.Show("已经成功执行交接班!\r\n" + this.ccbNextUser.Text + " 开始工作!", "接班提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.DialogResult = DialogResult.Yes;
            this.Close();
        }
Exemplo n.º 16
0
        /// <summary>
        /// �û���¼,�жϽ��Ӱ�
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btOK_Click(object sender, EventArgs e)
        {
            //������ڽ�ֹʹ��

            if (string.IsNullOrEmpty(this.cbbAccount.Text) || string.IsNullOrEmpty(this.tbPassword.Text))
            {
                MessageBox.Show("�û��������벻��Ϊ�գ�", "��¼��ʾ");
                return;
            }
            //�ж���ͣ�����񽻰�
            if (IHandOver() == false)
            {
                MessageBox.Show("�õ���δ���࣬�����Ƚ��Ӱ�!", "��ʾ", MessageBoxButtons.OK);
                return;
            }
            else
            {
                PopupBaseEdit pe;
                bool isNotExist = false;
                User user = new User(this.cbbAccount.Text, ref isNotExist);
                if (!isNotExist)
                    isNotExist = !user.login(tbPassword.Text);
                if (isNotExist)
                {
                    MessageBox.Show("�û��������벻��ȷ��", "��¼��ʾ");
                    return;
                }
                //���õ�ǰϵͳ�û�����������
                BindManager.setUser(user.UserAccounts);
                DataTable tab = this.dsUnit.Tables["����״̬"];
                if (tab != null && tab.Select("ֵ����='" + this.cbbAccount.Text.Trim() + "'").Length == 0)
                {
                    string operName = this.cbbAccount.Text.Trim();
                    string workStartTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    string ip = this.paramwin.AllValues.GetValue(2).ToString();
                    string tag = string.Empty;
                    tag = basefun.setvaltag(tag, "ֵ����", operName);
                    tag = basefun.setvaltag(tag, "�Ӱ�ʱ��", workStartTime);
                    tag = basefun.setvaltag(tag, "����IP", ip);
                    NameObjectList ps = ParamManager.createParam(tag);
                    ParamManager.MergeParam(ps, this.paramwin, false);
                    this.Query.ExecuteNonQuery("����״̬", ps, ps, ps);
                }
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
        }