/// <summary> /// 获取按钮客户端点击事件的脚本 /// </summary> /// <param name="validateForms">验证表单列表</param> /// <param name="validateTarget">表单验证提示消息目标页面</param> /// <param name="validateMessageBox">是否显示表单验证提示对话框</param> /// <param name="enablePostBack">启用回发</param> /// <param name="postBackEventReference">回发脚本</param> /// <param name="confirmText">确认对话框消息</param> /// <param name="confirmTitle">确认对话框标题</param> /// <param name="confirmIcon">确认对话框图标</param> /// <param name="confirmTarget">确认对话框目标页面</param> /// <param name="onClientClick">自定义客户端点击脚本</param> /// <param name="disableControlJavascriptID">需要禁用的控件客户端ID</param> /// <returns>客户端脚本</returns> internal static string ResolveClientScript(string[] validateForms, Target validateTarget, bool validateMessageBox, bool enablePostBack, string postBackEventReference, string confirmText, string confirmTitle, MessageBoxIcon confirmIcon, Target confirmTarget, string onClientClick, string disableControlJavascriptID) { // 1. 表单验证 string validateScript = String.Empty; if (validateForms != null && validateForms.Length > 0) { //JsArrayBuilder array = new JsArrayBuilder(); //foreach (string formID in validateForms) //{ // Control control = ControlUtil.FindControl(formID); // if (control != null && control is ControlBase) // { // array.AddProperty((control as ControlBase).ClientID); // } //} JsArrayBuilder array = ControlUtil.GetControlClientIDs(validateForms); validateScript = String.Format("if(!F.util.validForms({0},'{1}',{2})){{return false;}}", array.ToString(), TargetHelper.GetName(validateTarget), validateMessageBox.ToString().ToLower()); } // 2. 用户自定义脚本 string clientClickScript = onClientClick; if (!String.IsNullOrEmpty(clientClickScript) && !clientClickScript.EndsWith(";")) { clientClickScript += ";"; } // 3. 回发脚本 string postBackScript = String.Empty; if (enablePostBack) { if (!String.IsNullOrEmpty(disableControlJavascriptID)) { postBackScript += String.Format("F.f_disable('{0}');", disableControlJavascriptID); } postBackScript += postBackEventReference; } // 确认对话框 if (!String.IsNullOrEmpty(confirmText)) { postBackScript = Confirm.GetShowReference(confirmText, confirmTitle, confirmIcon, postBackScript, "", confirmTarget); } return(validateScript + clientClickScript + postBackScript); }
/// <summary> /// 获取显示确认对话框的客户端脚本 /// </summary> /// <param name="message">对话框消息</param> /// <param name="title">对话框标题</param> /// <param name="icon">对话框图标</param> /// <param name="okScript">点击确定按钮执行的客户端脚本</param> /// <param name="cancelScript">点击取消按钮执行的客户端脚本</param> /// <param name="target">弹出对话框的目标页面</param> /// <returns>客户端脚本</returns> public static string GetShowReference(string message, string title, MessageBoxIcon icon, string okScript, string cancelScript, Target target) { Confirm confirm = new Confirm(); confirm.Message = message; confirm.Title = title; confirm.MessageBoxIcon = icon; confirm.OkScript = okScript; confirm.CancelScript = cancelScript; confirm.Target = target; return confirm.GetShowReference(); /* if (String.IsNullOrEmpty(title)) { title = "F.util.confirmTitle"; } else { title = JsHelper.GetJsString(title.Replace("\r\n", "\n").Replace("\n", "<br/>")); } message = message.Replace("\r\n", "\n").Replace("\n", "<br/>"); JsObjectBuilder ob = new JsObjectBuilder(); ob.AddProperty("title", title, true); ob.AddProperty("msg", JsHelper.GetJsStringWithScriptTag(message), true); ob.AddProperty("buttons", "Ext.MessageBox.OKCANCEL", true); ob.AddProperty("icon", String.Format("{0}", MessageBoxIconHelper.GetName(icon)), true); ob.AddProperty("fn", String.Format("function(btn){{if(btn=='cancel'){{{0}}}else{{{1}}}}}", cancelScript, okScriptstring), true); string targetName = "window"; if (target != Target.Self) { targetName = TargetHelper.GetScriptName(target); } return String.Format("{0}.Ext.MessageBox.show({1});", targetName, ob.ToString()); */ //string scriptTitle = "''"; //if (!String.IsNullOrEmpty(title)) //{ // scriptTitle = JsHelper.Enquote(title.Replace("\r\n", "\n").Replace("\n", "<br/>")); //} //string scriptMessage = JsHelper.EnquoteWithScriptTag(message.Replace("\r\n", "\n").Replace("\n", "<br/>")); //string scriptIconName = "''"; //if (icon != MessageBoxIcon.Warning) //{ // scriptIconName = String.Format("'{0}'", MessageBoxIconHelper.GetShortName(icon)); //} //string scriptTargetName = "''"; //if (target != Target.Self) //{ // scriptTargetName = String.Format("'{0}'", TargetHelper.GetName(target)); //} //string scriptCancel = JsHelper.Enquote(cancelScript); //string scriptOK = JsHelper.Enquote(okScript); //JsObjectBuilder jsOB = new JsObjectBuilder(); //if (!String.IsNullOrEmpty(cancelScript)) //{ // jsOB.AddProperty("cancel", cancelScript); //} //if (!String.IsNullOrEmpty(okScript)) //{ // jsOB.AddProperty("ok", okScript); //} //if (target != Target.Self) //{ // jsOB.AddProperty("target", TargetHelper.GetName(target)); //} //if (icon != MessageBoxIcon.Warning) //{ // jsOB.AddProperty("messageIcon", MessageBoxIconHelper.GetShortName(icon)); //} //if (!String.IsNullOrEmpty(title)) //{ // jsOB.AddProperty("title", title.Replace("\r\n", "\n").Replace("\n", "<br/>")); //} //if (!String.IsNullOrEmpty(message)) //{ // jsOB.AddProperty("message", JsHelper.EnquoteWithScriptTag(message.Replace("\r\n", "\n").Replace("\n", "<br/>")), true); //} //return String.Format("F.confirm({0});", jsOB.ToString()); }
/// <summary> /// 生成按钮客户端点击事件的脚本 /// </summary> /// <param name="validateForms"></param> /// <param name="validateTarget"></param> /// <param name="enablePostBack"></param> /// <param name="postBackEventReference"></param> /// <param name="confirmText"></param> /// <param name="confirmTitle"></param> /// <param name="confirmIcon"></param> /// <param name="confirmTarget"></param> /// <param name="onClientClick"></param> /// <param name="disableControlJavascriptID"></param> /// <returns></returns> internal static string ResolveClientScript(string[] validateForms, Target validateTarget, bool validateMessageBox, bool enablePostBack, string postBackEventReference, string confirmText, string confirmTitle, MessageBoxIcon confirmIcon, Target confirmTarget, string onClientClick, string disableControlJavascriptID) { // 1. validateScript string validateScript = String.Empty; if (validateForms != null && validateForms.Length > 0) { #region old code //StringBuilder sb = new StringBuilder(); //sb.Append("var forms=[];"); //foreach (string formId in validateForms) //{ // Control control = ControlUtil.FindControl(formId); // if (control != null && control is ControlBase) // { // sb.AppendFormat("forms.push(X.{0});", (control as ControlBase).ClientJavascriptID); // } //} ////sb.Append("if(!box_validForms(forms,'表单不完整','请为 “{0}” 提供有效值!')){return false;}"); //sb.AppendFormat("var validResult=X.util.validForms(forms);if(!validResult[0]){{{0}return false;}}", // Alert.GetShowReference("请为 “'+validResult[1].fieldLabel+'” 提供有效值!", "表单不完整")); #endregion JsArrayBuilder array = new JsArrayBuilder(); foreach (string formID in validateForms) { Control control = ControlUtil.FindControl(formID); if (control != null && control is ControlBase) { array.AddProperty((control as ControlBase).ClientID); } } validateScript = String.Format("if(!X.util.validForms({0},'{1}',{2})){{return false;}}", array.ToString(), TargetHelper.GetName(validateTarget), validateMessageBox.ToString().ToLower()); } // 2. 用户自定义脚本 string clientClickScript = onClientClick; if (!String.IsNullOrEmpty(clientClickScript) && !clientClickScript.EndsWith(";")) { clientClickScript += ";"; } // 3. 回发脚本 string postBackScript = String.Empty; if (enablePostBack) { if (!String.IsNullOrEmpty(disableControlJavascriptID)) { postBackScript += String.Format("X.disable('{0}');", disableControlJavascriptID); //postBackScript += String.Format("X.util.setHiddenFieldValue('{0}','{1}');", ResourceManager.DISABLED_CONTROL_BEFORE_POSTBACK, disableControlClientId); //postBackScript += String.Format("X.util.setDisabledControlBeforePostBack('{0}');", disableControlJavascriptID); } postBackScript += postBackEventReference; } if (!String.IsNullOrEmpty(confirmText)) { #region old code // 对confirm进行处理,对<script></script>包含的内容做js代码处理 //string confirmText = ConfirmText.Replace("'", "\""); //if (confirmText.Contains("<script>")) //{ // confirmText = confirmText.Replace("<script>", "'+"); // confirmText = confirmText.Replace("</script>", "+'"); //} //confirmText = String.Format("'{0}'", confirmText); //JsObjectBuilder ob = new JsObjectBuilder(); //ob.AddProperty(OptionName.Title, String.Format("'{0}'", confirmTitle), true); //ob.AddProperty(OptionName.Msg, String.Format("'{0}'", JsHelper.GetStringWithJsBlock(confirmText)), true); //ob.AddProperty(OptionName.Buttons, "Ext.MessageBox.OKCANCEL", true); //ob.AddProperty(OptionName.Icon, String.Format("'{0}'", MessageBoxIconName.GetName(confirmIcon)), true); //ob.AddProperty(OptionName.Fn, String.Format("function(btn){{if(btn=='cancel'){{return false;}}else{{{0}}}}}", postBackScript), true); //postBackScript = String.Format("Ext.MessageBox.show({0});", ob.ToString()); #endregion postBackScript = Confirm.GetShowReference(confirmText, confirmTitle, confirmIcon, postBackScript, "return false;", confirmTarget); } return(validateScript + clientClickScript + postBackScript); }
/// <summary> /// 获取显示确认对话框的客户端脚本 /// </summary> /// <param name="message">对话框消息</param> /// <param name="title">对话框标题</param> /// <param name="icon">对话框图标</param> /// <param name="okScript">点击确定按钮执行的客户端脚本</param> /// <param name="cancelScript">点击取消按钮执行的客户端脚本</param> /// <param name="target">弹出对话框的目标页面</param> /// <returns>客户端脚本</returns> public static string GetShowReference(string message, string title, MessageBoxIcon icon, string okScript, string cancelScript, Target target) { Confirm confirm = new Confirm(); confirm.Message = message; confirm.Title = title; confirm.MessageBoxIcon = icon; confirm.OkScript = okScript; confirm.CancelScript = cancelScript; confirm.Target = target; return(confirm.GetShowReference()); /* * if (String.IsNullOrEmpty(title)) * { * title = "F.util.confirmTitle"; * } * else * { * title = JsHelper.GetJsString(title.Replace("\r\n", "\n").Replace("\n", "<br/>")); * } * message = message.Replace("\r\n", "\n").Replace("\n", "<br/>"); * * * JsObjectBuilder ob = new JsObjectBuilder(); * ob.AddProperty("title", title, true); * ob.AddProperty("msg", JsHelper.GetJsStringWithScriptTag(message), true); * ob.AddProperty("buttons", "Ext.MessageBox.OKCANCEL", true); * ob.AddProperty("icon", String.Format("{0}", MessageBoxIconHelper.GetName(icon)), true); * ob.AddProperty("fn", String.Format("function(btn){{if(btn=='cancel'){{{0}}}else{{{1}}}}}", cancelScript, okScriptstring), true); * * string targetName = "window"; * if (target != Target.Self) * { * targetName = TargetHelper.GetScriptName(target); * } * return String.Format("{0}.Ext.MessageBox.show({1});", targetName, ob.ToString()); */ //string scriptTitle = "''"; //if (!String.IsNullOrEmpty(title)) //{ // scriptTitle = JsHelper.Enquote(title.Replace("\r\n", "\n").Replace("\n", "<br/>")); //} //string scriptMessage = JsHelper.EnquoteWithScriptTag(message.Replace("\r\n", "\n").Replace("\n", "<br/>")); //string scriptIconName = "''"; //if (icon != MessageBoxIcon.Warning) //{ // scriptIconName = String.Format("'{0}'", MessageBoxIconHelper.GetShortName(icon)); //} //string scriptTargetName = "''"; //if (target != Target.Self) //{ // scriptTargetName = String.Format("'{0}'", TargetHelper.GetName(target)); //} //string scriptCancel = JsHelper.Enquote(cancelScript); //string scriptOK = JsHelper.Enquote(okScript); //JsObjectBuilder jsOB = new JsObjectBuilder(); //if (!String.IsNullOrEmpty(cancelScript)) //{ // jsOB.AddProperty("cancel", cancelScript); //} //if (!String.IsNullOrEmpty(okScript)) //{ // jsOB.AddProperty("ok", okScript); //} //if (target != Target.Self) //{ // jsOB.AddProperty("target", TargetHelper.GetName(target)); //} //if (icon != MessageBoxIcon.Warning) //{ // jsOB.AddProperty("messageIcon", MessageBoxIconHelper.GetShortName(icon)); //} //if (!String.IsNullOrEmpty(title)) //{ // jsOB.AddProperty("title", title.Replace("\r\n", "\n").Replace("\n", "<br/>")); //} //if (!String.IsNullOrEmpty(message)) //{ // jsOB.AddProperty("message", JsHelper.EnquoteWithScriptTag(message.Replace("\r\n", "\n").Replace("\n", "<br/>")), true); //} //return String.Format("F.confirm({0});", jsOB.ToString()); }