<%@ WebHandler Language="C#" Class="DataShow" %> using System; using System.Collections.Generic; using System.Web; using System.Data; using System.Data.Common; using System.Web.SessionState; using System.Text; using eMIS; public class DataShow : IHttpHandler , IRequiresSessionState { public void ProcessRequest (HttpContext context) { //context.Response.Redirect("ListGroup.ashx"); string menuId = context.Request.QueryString["proid"].ToString(); string userId = context.Session["userid"].ToString(); string wwwroot = context.Request.ApplicationPath; if (wwwroot == "/") wwwroot = ""; string ThemePath = wwwroot + "/Themes/" + context.Session["theme"].ToString(); string buttonGroupId = (context.Request.QueryString["bgid"] == null ? "" : context.Request.QueryString["bgid"].ToString()); DataManager sysData = new DataManager(); InstanceManager instManager = new InstanceManager(context,sysData,menuId); string programId = instManager.ProgramID; ProgramManager pm = instManager.Program; DataTable listElements = pm.ListElements; DataRow businessDataRow = null; TagManager tagManger = new TagManager(); tagManger.Context = context; int elementsCount = listElements.Rows.Count; int subprogramCount = pm.Subprograms.Rows.Count; int i,l,j,k; string s,s2,s3; string tjfs; string[] arr_temp; string[] arr_temp1; string url="", xml, str_bg, elementType; string primaryKeyValue; string primaryKey, foreignKey, relationDesc, relationCondition; DataTable listDataTable; string systemName = DataManager.GetSystemName(); string str1 = "", str, pagec, reltype; int colspan; string subPrimaryKeyValue; DataTable dt1 = null; bool isExistDownload = false; string mini = (context.Request.QueryString["mini"]==null ? instManager.GetStateValue("mini") : context.Request.QueryString["mini"].ToString()); if (context.Request.QueryString["strcondition"] !=null) instManager.DefaultCondition = context.Request.QueryString["strcondition"].ToString(); if (context.Request.QueryString["QueryCondition"] != null) instManager.QueryCondition = context.Request.QueryString["QueryCondition"].ToString(); string pageTitle = pm.Properties["bt"].ToString(); if (instManager.FlowNode != "") { pageTitle += "-" + instManager.Flow.GetNodeProperty(instManager.Flow.CurrentNodeID, "jdmc"); } if (context.Request.QueryString["var"] != null) { instManager.SetStateValue("vr", context.Request.QueryString["var"].ToString()); } if (buttonGroupId != "") { instManager.ButtonGroupID = buttonGroupId; } StringBuilder sb = new StringBuilder(); //'arr_relpro = aco.GetRelationProgram(1) //'RelProCount = UBound(arr_relpro) //RelProCount = aco.DetailPrograms.L2.count //rel1count = aco.DetailPrograms.L1.count //mini = aco.mini //ElementCount = UBound(arr_list) //'sb.Append aco.SQLSelectPart() //if RelProCount > 0 then str_selectpart = aco.SQLSelectPart() //set o = aco.GetListPageObject() //o.Init(aco) //For i = 1 To ElementCount // If arr_list(i, 0) = "" Then // ElementCount = i - 1 // Exit For // End If // If arr_list(i, 7) = "1" Then HeBing = "UniteCol(" & i & "," & i & ");" & HeBing //Next //sTemp = aco.SQLOrderbyPart //If sTemp <> "" Then // sTemp = Replace(sTemp, ",", " ") // arr_temp = Split(sTemp, " ") // SortColumn = arr_temp(2) // SortOrder = arr_temp(3) //End If //aco.GetPrintSetting if (instManager.PageCount > 1) { if (instManager.CurrentPage == 1) str = "disabled"; else str = "style='cursor:pointer;'"; if (instManager.CurrentPage == instManager.PageCount) str1 = "disabled"; else str1 = "style='cursor:pointer;'"; pagec = "
首页|上一页|下一页|末页
"; } else { pagec = " "; } s = instManager.SqlOrder; string sortColumn = ""; string sortOrder = ""; if (s != "") { s = s.Replace(",", " "); arr_temp = s.Split(' '); sortColumn = arr_temp[0]; sortOrder = arr_temp[1]; } //sb.Append(instManager.GetListSqlWhere()); sb.AppendLine(""); sb.AppendLine(""); string DZDYYM = pm.Properties["DZDYYM"].ToString(); sb.Append(""); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine("" + pageTitle + " - 列表"); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine(""); // sb.Append("
"); sb.Append(""); sb.Append(""); sb.Append("
"); if (buttonGroupId == "") buttonGroupId = instManager.ButtonGroupID; string tempStr; if (buttonGroupId != "") { tempStr = ""; tempStr += "
共" + instManager.RecordCount.ToString() + "条 " + instManager.CurrentPage + "/" + instManager.PageCount + "页转到
"; ToolBar toolbar = new ToolBar(sysData); sb.Append(toolbar.GetHtml(buttonGroupId, "查询", tempStr, wwwroot, instManager.MenuID, userId)); } sb.Append("
"); string pageHeight = "0"; if (mini == "") { pageHeight = "30"; sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append("
" + pageTitle + "" + pagec + "
"); } sb.Append("
"); sb.Append(""); sb.Append("
"); // string sTJFS = pm.Properties["TJFS"].ToString(); double[] var_sum,var_avg,var_max,var_min; double var_count,var_num; var_sum = new double[elementsCount]; var_avg = new double[elementsCount]; var_max = new double[elementsCount]; var_min = new double[elementsCount]; if (sTJFS!= "") { for (i=0;i
"); sb.Append(""); sb.Append("
"); sb.Append(""); } int displaySubprogramCount = 0; int openSubprogramCount = 0; //主表程序ID if (instManager.ParentID != "" && mini == "") { InstanceManager parentInst = new InstanceManager(context, sysData,instManager.ParentID); ProgramManager parentProg = parentInst.Program; // new ProgramManager(sysData, instManager.ParentID); parentInst.PrimaryKeyValue = instManager.ParentPrimaryKeyValue; sb.Append(""); DataTable parentList = parentProg.ListElements; l = parentList.Rows.Count; for (i = 0; i < l; i++) { if (parentList.Rows[i]["kjlx"].ToString() != "140") { sb.Append(""); } } sb.Append(""); listDataTable = parentInst.GetListDataTableByPrimaryKey(); int ll = listDataTable.Rows.Count; ControlManager controlsub = new ControlManager(parentInst); for (j = 0; j < ll;j++ ) { for (i = 0; i < l; i++) { if (parentList.Rows[i]["kjlx"].ToString() != "140") { controlsub.Init(listDataTable.Rows[j],parentList.Rows[i]); //sb.Append(""); sb.Append(""); } } } sb.Append("
" + parentList.Rows[i]["kjms"].ToString() + "
" + listDataTable.Rows[j][i].ToString() + "" + controlsub.Text + "

"); sb.Append(""); DataRow dr = null; businessDataRow = listDataTable.Rows[0]; tagManger.BusinessDataRow = businessDataRow; for (i = 0; i < parentProg.Subprograms.Rows.Count; i++) { dr = parentProg.Subprograms.Rows[i]; xml = dr["xml"].ToString(); if (StringHelper.GetXmlValue(xml, "弹出窗口") == "1" && dr["glcxid"].ToString()!="") { primaryKey = StringHelper.GetXmlValue(xml, "主键"); foreignKey = StringHelper.GetXmlValue(xml, "外键"); relationCondition = dr["gltj"].ToString(); url = foreignKey + "='" + businessDataRow[primaryKey] + "'"; if (relationCondition != "") url += " and " + tagManger.ReplaceExpression(relationCondition, "colval"); url = "&strCondition=" + url; url = wwwroot + tagManger.ReplaceExpression(dr["glcx"].ToString(), "colval") + "&relationFlag=true&parentid=" + instManager.ParentID + "&parentvalue=" + instManager.ParentPrimaryKeyValue + url; sb.Append(""); } } sb.Append("
" + dr["glms"].ToString() + "
"); } //2014-02-23 去除else for (i = 0; i < subprogramCount; i++) { xml = pm.Subprograms.Rows[i]["xml"].ToString(); if (StringHelper.GetXmlValue(xml, "同页显示") == "1") { displaySubprogramCount++; } } sb.Append(""); bool bSetBgcolor = false; string[] arr_bgcolor = new string[1]; s = pm.Properties["JLYSSZ"].ToString(); if( s!= "") { bSetBgcolor = true; arr_bgcolor = s.Split(';'); } sb.Append(""); if (displaySubprogramCount > 0) sb.Append(""); string[,] displayformat = new string[elementsCount,1]; string yc; string joinCellJs = ""; for(i=0;i< elementsCount;i++) { s = listElements.Rows[i]["YS"].ToString(); yc = (listElements.Rows[i]["YC"].ToString() == "1" ? "display:none;" : ""); if (listElements.Rows[i]["HB"].ToString() == "1") joinCellJs = "UniteCol(" + (i+1).ToString() + ",0);"+joinCellJs; sb.Append(""); setDisplayFormat(i,s); } l = pm.Subprograms.Rows.Count; for(i =0;i" + pm.Subprograms.Rows[i]["glms"].ToString() + ""); } } sb.Append(""); j = 2; //fujianxianshi = aco.mt.FlowMemo string guanjianziduan = pm.Properties["gjzd"].ToString(); listDataTable = instManager.GetMulitRecordDataTable(); int rowIndex = 0; DataRow row = null; string fieldName; string val; string elementId; string fontcolor=""; ControlManager control = new ControlManager(instManager); int c=listDataTable.Rows.Count; businessDataRow = null; for (int idx = 0; idx < c;idx++ ) { businessDataRow = listDataTable.Rows[idx]; tagManger.BusinessDataRow = businessDataRow; str_bg = "#000000"; primaryKeyValue = businessDataRow[guanjianziduan].ToString(); if (bSetBgcolor) { for (i = 0; i < arr_bgcolor.Length; i++) { arr_temp = arr_bgcolor[i].Split(','); if (instManager.MeetTheCondition(tagManger.ReplaceExpression(arr_temp[0], ""), primaryKeyValue)) { str_bg = arr_temp[1]; break; } } } sb.Append(""); if (displaySubprogramCount != 0) sb.Append(""); for (i = 0; i < elementsCount; i++) { row = listElements.Rows[i]; control.Init(businessDataRow, row); elementType = control.ControlType; elementId = control.ControlID; fieldName = control.FieldName; tjfs = row["TJFS"].ToString(); control.Display = true; yc = (row["YC"].ToString() == "1" ? "display:none;" : ""); if (instManager.FieldPopedom.AllowRead(fieldName)) val = control.Text; else val = "******"; val = val.Replace("\r\n", "
"); s = control.GetParamValue("setcolor", ""); if (s != "") { arr_temp = s.Split(','); s = tagManger.ReplaceExpression(arr_temp[1], "COLVAL"); dt1 = new DataTable(); if ((bool)dt1.Compute(s, "")) { fontcolor = "color:"+arr_temp[0]+";"; } else { fontcolor = ""; } } else { fontcolor=""; } sb.Append(""); } l = pm.Subprograms.Rows.Count; for (i = 0; i < l; i++) { row = pm.Subprograms.Rows[i]; xml = row["xml"].ToString(); if (StringHelper.GetXmlValue(xml, "弹出窗口") == "1") { url = tagManger.ReplaceExpression(row["glcx"].ToString(), "ColVal"); relationDesc = row["glms"].ToString(); primaryKey = StringHelper.GetXmlValue(xml, "主键"); foreignKey = StringHelper.GetXmlValue(xml, "外键"); relationCondition = row["gltj"].ToString(); if (relationCondition != "") relationCondition = tagManger.ReplaceExpression(relationCondition, "ColVal"); else relationCondition = "1=1"; if (primaryKey != "" && foreignKey != "") { subPrimaryKeyValue = businessDataRow[primaryKey].ToString(); relationCondition = foreignKey + "='" + subPrimaryKeyValue + "' and " + relationCondition; } //if Parameter <> "" then Parameter = o.tag.ReplaceExpression(Parameter,"ColVal") //显示从表的记录数,即关联程序描述为字段名的时候 //If InStr(1, str_selectpart, "." & relationDesc & ",") > 0 Then // relationDesc = relationDesc & "(" & o.UserRecordsetValue(relationDesc) & ")" // End If url += "&strCondition=" + context.Server.UrlEncode(relationCondition); if (primaryKey != "") url += "&relationFlag=true&parentid=" + menuId + "&parentvalue=" + primaryKeyValue + "&ForeignKey=" + foreignKey + "&PrimaryKeyValue=" + businessDataRow[primaryKey].ToString(); if (url.Substring(0, 1) == "/") { url = wwwroot + url; reltype = "0"; } else if (url.Substring(0, 1) == ":") { reltype = "1"; } else { reltype = "0"; } if (primaryKey != "") { if (businessDataRow[primaryKey].ToString() == "") relationDesc = ""; } sb.Append(""); } } sb.Append(""); if (displaySubprogramCount != 0) { sb.Append(""); } rowIndex++; } if (sTJFS != "") { //if (instManager.CurrentPage == instManager.PageCount) //'最后一页需要统计 if(true) { s = pm.ListTableName; str = ""; for (i = 1; i < elementsCount; i++) { tjfs = listElements.Rows[i]["tjfs"].ToString(); if (tjfs != "") { arr_temp = tjfs.Split(','); fieldName = listElements.Rows[i]["dyzd"].ToString(); for (j = 0; j < arr_temp.Length; j++) { switch (arr_temp[j]) { case "Total": str = str + ",sum(" + fieldName + ") as 总计" + i.ToString(); break; case "Average": str = str + ",avg(" + fieldName + ") as 平均值" + i.ToString(); break; case "Max": str = str + ",max(" + fieldName + ") as 最大值" + i.ToString(); break; case "Min": str = str + ",min(" + fieldName + ") as 最小值" + i.ToString(); break; case "Count": str = str + ",count(" + fieldName + ") as 记录数" + i.ToString(); break; } } } } if (str != "") { str = str.Substring(1); str = "select " + str + " from " + pm.ListTableName + " where " + instManager.ListSqlWhere ; DbDataReader r = instManager.BusinessDataManager.ExecuteReader(str); r.Read(); arr_temp = sTJFS.Split(new char[]{';'},StringSplitOptions.RemoveEmptyEntries); if (displaySubprogramCount > 0) colspan = 3; else colspan = 2; for (j = 0; j < arr_temp.Length; j++) { arr_temp1 = arr_temp[j].Split(','); tjfs = arr_temp1[5]; //' 名称 sb.Append(""); for (i = 1; i < elementsCount; i++) { sb.Append(""); } for (i = 1; i < openSubprogramCount; i++) sb.Append(""); sb.Append(""); } r.Close(); } } else { arr_temp = sTJFS.Split(new char[]{';'},StringSplitOptions.RemoveEmptyEntries); if (displaySubprogramCount > 0) colspan = 3; else colspan = 2; for (j = 0; j < arr_temp.Length; j++) { arr_temp1 = arr_temp[j].Split(','); tjfs = arr_temp1[5]; //' 名称 if (tjfs == "总计") tjfs = "小计"; sb.Append(""); for (i = 1; i < elementsCount; i++) { sb.Append(""); } for (i = 1; i < openSubprogramCount; i++) sb.Append(""); sb.Append(""); } } } sb.Append("
" + listElements.Rows[i]["kjms"].ToString() + "
"); if (elementType == "140") { if (val != "") { isExistDownload = true; arr_temp = val.Split('|'); for (j = 0; j < arr_temp.Length; j++) { s = arr_temp[j]; if (s != "") { s2 = control.GetParamValue("filename", "附件"); if (s.IndexOf("*") != -1) { s3 = s.Split('*')[1]; s3 = s3.Substring(s3.LastIndexOf("/") + 1); s3 = s3.Substring(0,s3.LastIndexOf(".")); if (s2 == "filename") { s2 = s3; } else { s2 = s2 + (j + 1).ToString(); } sb.Append(""+ s2 + ""); } else { if (s2 == "filename") { s2 = s.Substring(s.LastIndexOf("/") + 1); s2 = s2.Substring(0,s2.LastIndexOf(".") ); sb.Append("" + s2 + ""); } else { sb.Append("" + s2 + (j + 1).ToString() + ""); } } } sb.Append(" "); } } } else if (elementType == "42") { if (val != "") { arr_temp = val.Split('*'); sb.Append(""); } } else if (elementType == "3") { j = int.Parse(control.GetParamValue("maxlength", "0")); if (j != 0 && val.Length > j) s = val.Substring(0, j) + ".."; else s = val; sb.Append("" + s + ""); } else if (elementType == "45") { arr_temp = control.Value.Split(','); arr_temp1 = val.Split(','); for (j = 0; j < arr_temp.Length; j++) { sb.Append((j == 0 ? "" : " ") + "" + arr_temp1[j] + ""); } } else { if (sTJFS != "" && double.TryParse(val, out var_num)) { arr_temp = tjfs.Split(','); for (j = 0; j < arr_temp.Length; j++) { switch (arr_temp[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; } } } if (control.FieldName.ToLower() != "ztms") { s = control.GetParamValue("url", ""); if (s != "") { s = tagManger.ReplaceExpression(s, "ColVal"); sb.Append("" + val + ""); } else { j =int.Parse(control.GetParamValue("maxlength","0")); if(j!=0 &&val.Length>j) sb.Append("" + val.Substring(0, j) + ".."); else sb.Append(val); } } else { sb.Append("" + val + ""); } } sb.Append("" + relationDesc + "
" + tjfs + ""); s = listElements.Rows[i]["YS"].ToString();//格式化样式 for (k = 0; k < r.FieldCount; k++) { if (r.GetName(k) == (tjfs + i.ToString())) { //if (arr_temp1.Length == 5) sb.Append(Format(s,r[k].ToString())); //else //sb.Append(Math.Round(r.GetDecimal(k), int.Parse(arr_temp1[6]))); } } sb.Append("
" + tjfs + ""); s = listElements.Rows[i]["YS"].ToString();//格式化样式 switch (tjfs) { case "小计": if (var_sum[i] != 0) sb.Append(Format(s,var_sum[i].ToString())); else sb.Append(" "); break; case "最大值": if (var_max[i] != double.MinValue) sb.Append(Format(s,var_max[i].ToString())); else sb.Append(" "); break; case "最小值": if (var_min[i] != double.MaxValue) sb.Append(Format(s,var_min[i].ToString())); else sb.Append(" "); break; } sb.Append("

"); // sb.Append(""); if (mini == "") { } else { sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append("
" + pagec + "
"); } //
//sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); context.Response.Write(sb.ToString()); } private string Format(string formatString, string valueString) { int i = formatString.IndexOf("format:("); if (i == -1) return valueString; if (valueString == "") return ""; string s = formatString.Substring(i + 8, formatString.IndexOf(")", i) - i - 8); string[] a = s.Split(','); string ret = valueString; switch (a[0]) { case "datetime": ret = DateTime.Parse(valueString).ToString(a[1]); break; case "number": double d; if (double.TryParse(valueString, out d)) ret = d.ToString(a[1]); else ret = ""; break; default: break; } return ret; } public void setDisplayFormat(int idx,string s) { //dim s1,fn,ft,i,k //if s= "" then // fn = "" //else // i = instr(s,"displayformat") // if i <1 then // fn= "" // else // i = i + 14 // k = instr(i,s,"(") // fn = mid(s,i,k-i) // i = instr(k,s,")") - 1 // ft = mid(s,k+1,i-k) // end if //end if //displayFormat(idx,0) = fn //displayFormat(idx,1) = ft } private string getDisplay(int idx,string v) { string r=v; //if displayFormat(idx,0) = "" then // r = v //else // select case displayFormat(idx,0) // case "date" // r = emisformatdate(displayFormat(idx,1),v) // case "money" // r = emisformatmoney(displayFormat(idx,1),v) // end select //end if return r; } private string emisformatmoney(string ft,string v) { string r; r = v; if (v != "") { string f = ft + ",,,"; string[] a = f.Split(','); if (a[0] == "") a[0] = "¥"; if (a[1] == "") a[1] = "1"; if (a[2] == "") a[2] = "-1"; if (a[1] == "1") r = Math.Round(Convert.ToDecimal(r),Convert.ToInt16(a[1])).ToString(); r = a[0] + r; } return r; } private string GetItemValue(string itemsString,string itemName) { int i = itemsString.IndexOf("\"" + itemName + "\" : \"") + itemName.Length + 6; int j = itemsString.IndexOf("\"",i); return itemsString.Substring(i, j - i); } public bool IsReusable { get { return false; } } }