<%@ WebHandler Language="C#" Class="EditData" Debug="true" %> 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; using Newtonsoft.Json; using Newtonsoft.Json.Linq; public class EditData : IHttpHandler , IRequiresSessionState { public void ProcessRequest (HttpContext context) { string s; if (context.Session["userid"] == null) { LoginManager lm = new LoginManager(context); if (!lm.VerifyIdentity()) { s = "会话丢失,请重新登陆!"; context.Response.Redirect("EditData_Error.aspx?info="+DataManager.UrlEncode(s)+"&v="+DataManager.MD5Hash(s)); context.Response.End(); } } string num = "1"; //try // { string ver = "2020161"; string wwwroot = context.Request.ApplicationPath; if (wwwroot == "/") wwwroot = ""; HttpCookie cookie = context.Request.Cookies["_user"]; string login_from = (cookie == null ? "pc" : cookie["board"].ToString()); string ThemePath = wwwroot + "/Themes/" + context.Session["theme"].ToString(); string menuId = context.Request["proid"].ToString(); string recordId = context.Request["varSign"].ToString(); string recordId2 = (context.Request["mrid"] == null ? "" : context.Request["mrid"].ToString()); string token = "";// context.Request["token"].ToString(); bool isIP = (context.Session["ismobile"].ToString() == "1"); int i; string userId = context.Session["userid"].ToString(); string userCnName = context.Session["usercnname"].ToString(); /* if (!LoginManager.VerifyUser(token, userId)) { s = "用户会话发生变化,请重新登录!"; context.Response.Redirect("EditData_Error.aspx?info=" + DataManager.UrlEncode(s) + "&v=" + DataManager.MD5Hash(s)); context.Response.End(); } */ num = "2"; string ip = HttpContext.Current.Request.UserHostAddress; string url_dt = DateTime.Now.Ticks.ToString(); string rndstr = DataManager.GetToken(userId, url_dt, ip); bool multiRowEdit = false; DataManager dm = new DataManager(); dm.Operator.OpenConnection(); InstanceManager inst = new InstanceManager(context, dm, menuId); inst.PrimaryKeyValue = recordId; string popedomUserId = inst.PopedomUserID; inst.Ver = ver; if (recordId2 != "") { multiRowEdit = true; inst.MultiRowEditPrimaryKey = recordId2; } if (context.Request["MoveRecord"] != null) { recordId = inst.GetMovePrimaryKey(recordId, context.Request["MoveRecord"].ToString()); inst.PrimaryKeyValue = recordId; } string mini = inst.GetStateValue("emn"); bool allowEdit = true; if (mini == "") { allowEdit = inst.AllowEdit(); } else { inst.FieldPopedom.Priority = 2; } num = "3"; if (!allowEdit) { s = "没有访问的权限!"; context.Response.Redirect("EditData_Error.aspx?info=" + DataManager.UrlEncode(s) + "&v=" + DataManager.MD5Hash(s)); context.Response.End(); } ProgramManager program = inst.Program; DataTable elements = program.EditElements; int elementsCount = elements.Rows.Count; FieldPopedomManager fpm = new FieldPopedomManager(inst); string programId = program.ID; string customUi = (multiRowEdit ? "" : program.Properties["DZBJYM"].ToString()); bool isTab = (inst.Program.EditPageTabName != ""); JObject json = JsonConvert.DeserializeObject("{" + program.Properties["json"].ToString() + "}"); if (context.Request.QueryString["var"] != null) inst.SetStateValue("vr", context.Request.QueryString["var"].ToString()); if (context.Request.QueryString["cpara"] != null) inst.SetStateValue("vr", DataManager.UrlDecode(context.Request.QueryString["cpara"].ToString())); num = "4"; if (elementsCount == 0) { string path = customUi; if (path == "") { s = "请定义维护字段!"; context.Response.Redirect("EditData_Error.aspx?info=" + DataManager.UrlEncode(s) + "&v=" + DataManager.MD5Hash(s)); context.Response.End(); } else { path = program.GetTemplatePath(path); if (path.IndexOf("?") == -1) path += "?"; else path += "&"; } num = "5"; context.Response.Redirect(wwwroot + path + "id=" + recordId + "&proid=" + menuId + "&position=1&count=1&recid=" + recordId); num = "6"; } string pagetitle = program.Properties["bt"].ToString(); StringBuilder sb = new StringBuilder(); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine("" + pagetitle + ""); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine(""); if (login_from == "dd") sb.AppendLine(""); if (isIP) { sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine(""); } inst.OutClientHeadHtml(sb, customUi, userCnName); // sb.AppendLine(""); // sb.AppendLine(""); sb.AppendLine(""); inst.OutHiddenControlsHtml(sb); // sb.Append("
"); if (mini != "1") { sb.Append("
"); sb.Append("
"); ToolBar2 toolbar = new ToolBar2(dm); if (inst.ButtonGroupID == "") sb.Append("菜单(" + menuId + ")未定义按钮组!"); else sb.Append(toolbar.GetHtml(inst.ButtonGroupID, "编辑", "", wwwroot, inst.MenuID, popedomUserId)); sb.Append("
"); sb.Append("
"); sb.Append("
"); if (login_from == "pc") { sb.Append("
"); sb.Append("
"); } else { sb.Append("
"); } sb.Append("
"); sb.Append("
"); // } // //> inst.Tag.BusinessDataRow = inst.EditDataRow; if (isTab) { inst.AppendSubprogramsHtml(sb, "tab"); sb.Append("
"); sb.Append("
"); sb.Append("
"); } else { sb.Append("
"); sb.Append("
"); } // && (json.edit==null || json.edit.columns==1) int total_cols = 5; bool ui_border = false; bool ui_columns = false; bool ui_subtab = true; JObject uicfg = (JObject)json["edit"]; if (uicfg != null) { if (uicfg["columns"] != null) { total_cols = int.Parse(uicfg["columns"].ToString()); ui_columns = true; } if (uicfg["border"] != null) { ui_border = uicfg["border"].ToString() == "1"; } if (uicfg["subtab"] != null) { ui_subtab = uicfg["subtab"].ToString() == "1"; } } //total_cols = 3; if (customUi != "") { //if (isIP) // oPage.WriteCustomPageRO; //else s = context.Server.MapPath(wwwroot + program.GetTemplatePath(customUi)); inst.AppendCustomPageHtml(s, sb); } else { sb.Append("
" + pagetitle+"
"); sb.Append("
"); ControlManager cm = null; int controlCount = inst.EditControls.Count; int control_cols = 1; int control_rows = 1; int cur_col_idx = 0; int cur_cols=1, cur_rows; string default_size_c; string default_size_r; int ii,iii=-1; int item_width = 100 / total_cols; if (!multiRowEdit) { sb.Append("
"); for (i = 0; i < controlCount; i++) { cm = inst.EditControls[i]; if (!cm.IsHidden) { default_size_c = (cm.ControlType == "38" || cm.ControlType == "4"||cm.ControlType == "42"||cm.ControlType == "140" ? "2" : "1"); default_size_r = "1"; if (cm.ControlType == "4" || cm.ControlType == "42") default_size_r = "3"; else if (cm.ControlType == "38") default_size_r = "6"; cur_cols = int.Parse(GetStyle(cm.ControlStyle, "colspan", default_size_c)); cur_rows = int.Parse(GetStyle(cm.ControlStyle, "rowspan", default_size_r)); cm.ControlStyle = "width:100%;" + (ui_border ? "border:0px;" : "") + "height:" + (22 * cur_rows).ToString() + "px; font-size:12px;"; cur_col_idx += cur_cols; if (cur_col_idx > total_cols) { //for (ii = 0; ii < total_cols - (cur_col_idx - cur_cols); ii++) // sb.Append(""); //sb.Append(""); //sb.Append(""); cur_col_idx = cur_cols; iii = total_cols-cur_cols+1; } else { iii = total_cols - cur_col_idx; } sb.Append("
"); sb.Append(cm.ControlDescription); if (!cm.AllowNull) sb.Append(" *"); sb.Append("
"); sb.Append(cm.GetHtml()); sb.Append("
"); sb.Append("
"); //sb.Append("
"); } } if(ui_border) sb.Append("
"); sb.Append("
"); } else { sb.Append(""); for (i = 0; i < controlCount; i++) { cm = inst.EditControls[i]; cm.ControlStyle += ";border:1px solid #9FBDDC;"; if (!cm.IsHidden && !cm.Readonly) { sb.Append(""); sb.Append(""); sb.Append(""); } } sb.Append("
"); sb.Append(cm.ControlDescription); sb.Append(":"); if (!cm.AllowNull) sb.Append(" *"); sb.Append(""); sb.Append(cm.GetHtml()); sb.Append("
"); } if (!multiRowEdit) sb.Append(""); sb.Append("
"); //if (isIP) //oPage.WriteSubprogramsRO("全部"); //else if (!isTab) { if (ui_subtab) { inst.AppendSubprogramsHtml(sb, "all"); } else { i = 0; foreach (DataRow row in inst.Program.Subprograms.Rows) { i++; if (StringHelper.GetXmlValue(row["xml"].ToString(), "同页编辑") != "0") { sb.Append("
" + row["GLMS"].ToString() + "
"); inst.AppendSubprogramsHtml(sb, i.ToString()); } } } } sb.Append("
"); if (inst.FlowNode != "") { sb.Append("
"); inst.WriteFlowLogs(sb, "#c3cbda", ""); sb.Append("
"); } } if (isTab) sb.Append("
"); inst.Dispose(); // sb.Append("
"); // sb.AppendLine(""); sb.AppendLine(""); sb.Append(""); sb.Append(""); dm.Operator.CloseConnection(); context.Response.Write(sb.ToString()); /* } catch (Exception exc) { if (context.Session["superman"].ToString() == "1") { throw new Exception("editdata", exc); } else { s = num + "---"+ exc.Message; context.Response.Redirect("EditData_Error.aspx?info="+DataManager.UrlEncode(s)+"&v="+DataManager.MD5Hash(s)); context.Response.End(); } } */ } 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 GetStyle(string style, string name,string def) { string r=def; int i = style.IndexOf(name); if (i == -1) return r; style += ";"; i = style.IndexOf(":", i); int j = style.IndexOf(";",i); r = style.Substring(i+1, j - i-1); 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; } } }