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; }
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()); }
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(); }
/// <summary> /// 数据更新,带有权限的更新,并设置是否清除数据状态 /// </summary> /// <param name="bIsReset">是否重置状态</param> /// <param name="currentUser">当前的权限用户</param> /// <returns></returns> public override bool Update(bool bIsReset, User currentUser) { return true; }
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; }
/// <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)); } } }
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; } } } }
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; }
/// <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; }
/// <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); } }
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; } }
/// <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; }
/// <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("没有此帐号或口令错误!"); } }
/// <summary> /// 设置全局当前用户 /// </summary> /// <param name="userid">用户ID</param> /// <returns>用户实例</returns> public static User setUser(string userid) { return BindManager.user = new User(userid); }
/// <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(); }
/// <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(); } }