%@ 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("");
for (int i = 0; i < controlCount; i++)
{
cm = inst.EditControls[i];
if (!cm.IsHidden)
{
sb.Append("");
sb.Append("");
sb.Append(cm.ControlDescription);
sb.Append(":");
sb.Append(" | ");
sb.Append("");
cm.GetDisplayHtml(sb);
sb.Append(" |
");
}
}
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");
sb.Append("");
}
else
{
s = StringHelper.GetXmlValue(xml,"外键") + "='"+ recordId+ "'";
s2 = row["gltj"].ToString();
if (s2 != "")
s+=" and ("+ s2 + ")";
sb.Append("");
sb.Append(row["glms"].ToString());
sb.Append(" |
");
sb.Append("");
if (StringHelper.GetXmlValue(xml, "同页编辑") == "1")
getSubList2(sb, instance,subprogid, s);
else
getSubList1(sb, instance, subprogid, s);
sb.Append("
");
}
}
sb.Append("");
}
}
public void getSubList1(StringBuilder sb, InstanceManager instance, string menuId, string cond)
{
InstanceManager inst = new InstanceManager(instance.Context, instance.SystemDataManager,menuId);
inst.InitState();
cond = instance.Tag.ReplaceExpression(cond, "");
inst.QueryCondition = cond;
DataTable listData = inst.GetMulitEditDataTable();
DataTable elements = inst.Program.EditElements;
getSubList(sb, inst, listData, elements, 1);
}
public void getSubList2(StringBuilder sb, InstanceManager instance, string menuId, string cond)
{
InstanceManager inst = new InstanceManager(instance.Context, instance.SystemDataManager,menuId);
inst.InitState();
cond = instance.Tag.ReplaceExpression(cond, "");
inst.QueryCondition = cond;
DataTable listData = inst.GetMulitRecordDataTable();
DataTable elements = inst.Program.ListElements;
getSubList(sb, inst,listData, elements,2);
}
public void getSubList(StringBuilder sb, InstanceManager inst, DataTable listData, DataTable elements, int mode)
{
int elementsCount = elements.Rows.Count;
string subProgramId = inst.ProgramID;
int i;
string joinCellJs = "";
sb.Append("");
for(i=0;i" + elements.Rows[i]["kjms"]+"");
if (mode == 1)
{
if (elements.Rows[i]["SX"].ToString().IndexOf("merge") != -1)
joinCellJs = "UniteCol('" + subProgramId + "'," + (i+1).ToString() + ",0);" + joinCellJs;
}
else
{
if (elements.Rows[i]["HB"].ToString() == "1")
joinCellJs = "UniteCol('" + subProgramId + "'," + (i+1).ToString() + ",0);" + joinCellJs;
}
}
sb.Append("
");
ControlManager control = new ControlManager(inst);
control.Display = true;
string str,fff;
string[] a;
int cellIdx=0;
//统计=======================================
string sTJFS = "",tjfs;
double[] var_sum, var_avg, var_max, var_min;
double var_count, var_num;
string[] a1, a2;
int j;
var_sum = new double[elementsCount];
var_avg = new double[elementsCount];
var_max = new double[elementsCount];
var_min = new double[elementsCount];
if (mode == 2)
{
sTJFS = inst.Program.Properties["TJFS"].ToString();
if (sTJFS != "")
{
for (i = 0; i < elementsCount; i++)
{
var_sum[i] = 0;
var_avg[i] = 0;
var_max[i] = double.MinValue;
var_min[i] = double.MaxValue;
}
var_count = 0;
}
}
//统计=========================================
int c = listData.Rows.Count;
for (int idx = 0; idx < c;idx++ )
{
sb.Append("");
for (i = 0; i < elementsCount; i++)
{
control.Init(listData.Rows[idx], elements.Rows[i]);
if (!control.IsHidden)
{
str = control.Text;
cellIdx++;
if (control.ControlType == "140")
{
sb.Append("");
if (str != "")
{
a = str.Split('|');
str = "";
for (i = 0; i < a.Length; i++)
{
fff = a[i];
sb.Append("附件" + (i + 1).ToString() + "");
}
}
sb.Append(" | ");
}
else
{
//统计=================================
if (mode == 2 && sTJFS != "" && double.TryParse(str, out var_num))
{
tjfs = elements.Rows[i]["TJFS"].ToString();
a1 = tjfs.Split(',');
for (j = 0; j < a1.Length; j++)
{
switch (a1[j])
{
case "Total":
var_sum[i] = var_sum[i] + var_num;
break;
case "Average":
var_avg[i] = var_avg[i] + var_num;
break;
case "Max":
if (var_num > var_max[i])
var_max[i] = var_num;
break;
case "Min":
if (var_num < var_min[i])
var_min[i] = var_num;
break;
}
}
}
//统计========================================
sb.Append("" + str + " | ");
}
}
}
sb.Append("
");
}
//统计
if (mode==2 && sTJFS != "")
{
a1 = sTJFS.Split(';');
for (j = 0; j < a1.Length; j++)
{
a2 = a1[j].Split(',');
tjfs = a2[5]; //' 名称
if (tjfs == "总计")
tjfs = "小计";
sb.Append("" + tjfs + " | ");
for (i = 2; i < elementsCount; i++)
{
sb.Append("");
switch (tjfs)
{
case "小计":
if (var_sum[i] != 0)
sb.Append(var_sum[i].ToString());
else
sb.Append(" ");
break;
case "最大值":
if (var_max[i] != double.MinValue)
sb.Append(var_max[i]);
else
sb.Append(" ");
break;
case "最小值":
if (var_min[i] != double.MaxValue)
sb.Append(var_min[i]);
else
sb.Append(" ");
break;
}
sb.Append(" | ");
}
sb.Append("
");
}
}
//统计========================================================
sb.Append("
");
}
public bool IsReusable
{
get
{
return false;
}
}
}