<%@ WebHandler Language="C#" Class="CustomPageDisplay" %> using System; using System.Collections.Generic; using System.Web; using System.Data; using System.IO; using eMIS.Data; using System.Data.Common; using System.Web.SessionState; using eMIS; using System.Text; public class CustomPageDisplay : IHttpHandler, IRequiresSessionState { private string wwwroot; private string recordId; private int recordCount; private int recordPosition; private string programId; private string templateId; private string displayToolbar; public void ProcessRequest (HttpContext context) { bool b = false; wwwroot = context.Request.ApplicationPath; if (wwwroot == "/") wwwroot = ""; string url = ""; StringBuilder sb = new StringBuilder(); programId = context.Request.QueryString["proid"].ToString(); recordId = context.Request.QueryString["recid"].ToString(); InstanceManager inst = new InstanceManager(context, programId); if (recordId == "" && context.Request.QueryString["position"] != null) { recordPosition= int.Parse(context.Request.QueryString["position"].ToString()); inst.RecordPosition = recordPosition; recordId = inst.PrimaryKeyValue; } else { inst.PrimaryKeyValue = recordId; recordPosition = inst.RecordPosition; } recordCount = inst.RecordCount; templateId = inst.Program.Properties["DZBJYM"].ToString(); if (templateId != "") { DbDataReader reader = inst.SystemDbOperator.ExecuteReader("Select MBLJ,LX,MBMS From COM_ZDYMBB where ID=" + templateId); string r1="",r0=""; if(reader.Read()) { r1 = reader[1].ToString(); r0 = reader[0].ToString(); } reader.Close(); if (r1 == "程序") { context.Response.Redirect(wwwroot + r0 + (r0.IndexOf("?")==-1?"?":"&") +"id=" + recordId + "&pid=" + programId + "&recordcount="+recordCount.ToString()+"&position=" + recordPosition + "&r=" + DateTime.Now.Ticks.ToString()); } else { r0 = context.Server.MapPath(wwwroot + "/App_Web/Template/" + r0); sb.Append(""); sb.Append(""); WriteCustomPage(sb,inst, r0); sb.Append(""); context.Response.Write(sb.ToString()); } } else { int controlCount = inst.EditControls.Count; ControlManager cm = null; sb.Append("" + inst.Program.Properties["bt"].ToString()+ ""); sb.Append("
"); sb.Append("
"); sb.Append(""); for (int i = 0; i < controlCount; i++) { cm = inst.EditControls[i]; if (!cm.IsHidden) { sb.Append(""); sb.Append(""); sb.Append(""); } } sb.Append("
"); sb.Append(cm.ControlDescription); sb.Append(":"); sb.Append(""); cm.GetDisplayHtml(sb); sb.Append("
"); //if (isIP) //oPage.WriteSubprogramsRO("全部"); //else inst.AppendSubprogramsHtml(sb, "all"); sb.Append("
"); context.Response.Write(sb.ToString()); } if (url != "") context.Response.Redirect(url); } private string getfilename(string url) { int i = url.LastIndexOf("/"); return url.Substring(i+1); } private string GetWidth(string style) { string s = style.ToLower() + ";"; int i = s.IndexOf("width:"); if (i == -1) return ""; s = s.Substring(i, s.IndexOf(";", i) - i+1); return s; } private string GetTextAlign(string style) { string s = style.ToLower() + ";"; int i = s.IndexOf("text-align:"); if (i == -1) return ""; s = s.Substring(i, s.IndexOf(";", i) - i + 1); return s; } private void WriteCustomPage(StringBuilder sb,InstanceManager instance,string templatePath) { StreamReader sr = new StreamReader(templatePath, Encoding.GetEncoding("utf-8")); string line; int beginPosition; int endPosition; int findPoistion; DataTable elements = instance.Program.EditElements; ControlManager control = null; string ms, str,fff; string[] a; int i; bool b = false; bool b2 = false; string s; while (!sr.EndOfStream) { line = sr.ReadLine(); line = line.Replace("<", "<"); line = line.Replace(">", ">"); findPoistion = 0; while (true) { beginPosition = line.IndexOf("<#"); if (beginPosition == -1) { sb.Append(line.Substring(0)); break; } sb.Append(line.Substring(0,beginPosition)); endPosition = line.IndexOf("#>"); ms = line.Substring(beginPosition+2, endPosition - beginPosition - 2); line = line.Substring(endPosition+2); if (instance.EditControlDescriptionIndex.ContainsKey(ms)) { control = instance.EditControls[instance.EditControlDescriptionIndex[ms]]; control.Display = true; control.GetDisplayHtml(sb); } else { ms = ms.ToUpper(); if (ms.IndexOf("IF") != -1) ms = StringHelper.GetRightString(ms); str = ""; if (ms.IndexOf("GLCX3") != -1) { b = true; //subprogs3(StringHelper.GetRightString(ms)); } else if (ms.IndexOf("GLCX") != -1) { subprogs2(sb, instance, StringHelper.GetRightString(ms)); b2 = true; } else if (ms.IndexOf("FLOWLOGS") != -1) { instance.WriteFlowLogs(sb,StringHelper.GetRightString(ms),"1"); } else if(ms.IndexOf("FLOW") != -1) { sb.Append(instance.GetFlowLog(StringHelper.GetRightString(ms))); } } findPoistion = endPosition + 2; } } sr.Close(); if (b) instance.Context.Response.Write(""); if (b2) instance.Context.Response.Write(""); } private void subprogs2(StringBuilder sb,InstanceManager instance,string idx) { int l; int i; DataRow row =null; string s; string s2; string subprogid; string iframesrc; string c; string xml; if(int.TryParse(idx,out l)) { row = instance.Program.Subprograms.Rows[l-1]; xml = row["xml"].ToString(); c = row["gltj"].ToString(); if (c == "") c = StringHelper.GetXmlValue(xml, "外键") + "='" + recordId + "'"; else c += " and " + StringHelper.GetXmlValue(xml, "外键") + "='" + recordId + "'"; if(StringHelper.GetXmlValue(xml, "同页编辑")=="1") getSubList2(sb, instance, row["glcxid"].ToString(), c); else getSubList1(sb, instance, row["glcxid"].ToString(), c); } else { l = instance.Program.Subprograms.Rows.Count; if(l==0) return ; sb.Append("
"); for(i=0;i