/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); #region options OB.AddProperty("checked", Checked); if (!String.IsNullOrEmpty(GroupName)) { OB.AddProperty("group", GroupName); } #endregion #region AutoPostBack string checkScript = String.Empty; if (!String.IsNullOrEmpty(GroupName)) { checkScript = "if(F.util.checkGroupLastTime('" + GroupName + "')){" + GetPostBackEventReference() + "}"; } else { checkScript = GetPostBackEventReference(); } OB.Listeners.AddProperty("checkchange", JsHelper.GetFunction(checkScript), true); #endregion string jsContent = String.Format("var {0}=Ext.create('Ext.menu.CheckItem',{1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); OB.AddProperty("checked", Checked); // In CheckBox control, Text is the showing beside the checkbox. if (!String.IsNullOrEmpty(Text)) { OB.AddProperty("boxLabel", Text); } if (AutoPostBack) { // We should attach the "check" event after the control is rendered. // Because in the rendering process, the control will also trigger the "check" event, then we cann't distinguish it from the actual event. // We don't need delay here, because every PostBack has been delayed in global "ajaxPostBack" function. //string checkEventScript = String.Format("{0}.on('check',{1},X,{{delay:0}});", XID, JsHelper.GetFunction(GetPostBackEventReference())); //string renderScript = "(function(){" + checkEventScript + "}).defer(20);"; //// 既然不需要延迟执行回发请求,那么就没必要放在render事件中了 //string checkEventScript = String.Format("this.on('check',{0});", JsHelper.GetFunction(GetPostBackEventReference())); //OB.Listeners.AddProperty("render", "function(){" + checkEventScript + "}", true); OB.Listeners.AddProperty("check", JsHelper.GetFunction(GetPostBackEventReference()), true); } string jsContent = String.Format("var {0}=new Ext.form.Checkbox({1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); //ResourceManager.Instance.AddJavaScriptComponent("form"); #region Options #endregion #region ResolveRows // 包含行的列脚本 string rowScriptStr = String.Empty; // 行的集合 string rowItemScriptStr = String.Empty; // 如果存在Rows集合 if (Rows.Count > 0) { // rowScriptStr // rowItemScriptStr: [X.__Panel1_UpdatePanelConnector1_Panel7_Form5_row0,X.__Panel1_UpdatePanelConnector1_Panel7_Form5_row2] ResolveRows(ref rowScriptStr, ref rowItemScriptStr); // 添加Items OB.RemoveProperty("items"); OB.AddProperty("items", rowItemScriptStr, true); } //rowScriptStr += "\r\n"; #endregion //OptionBuilder defaultsOB = new OptionBuilder(); //defaultsOB.Listeners.AddProperty("change", JsHelper.GetFunction("F.util.setPageStateChanged();"), true); //OB.AddProperty("defaults", defaultsOB); //OB.Listeners.AddProperty("change", JsHelper.GetFunction("F.util.setPageStateChanged();"), true); OB.Listeners.AddProperty("dirtychange", JsHelper.GetFunction("F.util.setPageStateChanged(dirty);", "form", "dirty"), true); //if (!String.IsNullOrEmpty(SubmitButton)) //{ // Control control = ControlUtil.FindControl(SubmitButton); // if (control != null && control is ControlBase) // { // OB.Listeners.AddProperty("render", JsHelper.GetFunction("F.util.formEnterKey(form,'" + control.ClientID + "');", "form"), true); // } //} string formPanelScript = String.Format("var {0}=Ext.create('Ext.form.Panel',{1});", XID, OB.ToString()); //AddStartupScript(this, rowScriptStr + formPanelScript); string jsContent = rowScriptStr + formPanelScript; AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); //ResourceManager.Instance.AddJavaScriptComponent("form"); #region Options #endregion //OptionBuilder defaultsOB = new OptionBuilder(); //defaultsOB.Listeners.AddProperty("click", JsHelper.GetFunction("alert('ss');F.util.setPageStateChanged();"), true); //OB.AddProperty("defaults", defaultsOB); OB.Listeners.AddProperty("dirtychange", JsHelper.GetFunction("F.util.setPageStateChanged(dirty);", "form", "dirty"), true); //if (!String.IsNullOrEmpty(SubmitButton)) //{ // Control control = ControlUtil.FindControl(SubmitButton); // if (control != null && control is ControlBase) // { // OB.Listeners.AddProperty("render", JsHelper.GetFunction("F.util.formEnterKey(form,'" + control.ClientID + "');", "form"), true); // } //} /* * Ext.override(Ext.form.Panel, { * listeners: { * render: function () { * Ext.create('Ext.util.KeyNav', this.el, { * "enter": function (e) { * var el = Ext.Element.getActiveElement(); * if (el.type != 'textarea') { * var b = Ext.DomQuery.select('div[id=' + this.getId() + ']'); * var a = Ext.DomQuery.select('*[type=submit]', b[0]); * if (a[0]) { * a[0].click(); * } * } else { * // The user is in a textarea in the form so this feature * // is diabled to allow for character returns * // in field data. * } * }, * scope: this * }); * } * } * }); */ string jsContent = String.Format("var {0}=Ext.create('Ext.form.Panel',{1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); //// 日期选择器也需要菜单组件的支持 //ResourceManager.Instance.AddJavaScriptComponent("menu"); // extjs 的日期格式化字符串 string extjsDateFormatString = ExtDateTimeConvertor.ConvertToExtDateFormat(DateFormatString); OB.AddProperty("format", extjsDateFormatString); if (EnableChineseAltFormats) { OB.AddProperty("altFormats", "Y-m-d|Y-n-j|Ymd|Ynj|y-m-d|y-n-j|ymd|ynj"); } else if (AltFormats != null) { StringBuilder formats = new StringBuilder(); foreach (string format in AltFormats) { formats.Append(ExtDateTimeConvertor.ConvertToExtDateFormat(format)); formats.Append("|"); } OB.AddProperty("altFormats", formats.ToString().TrimEnd('|')); } //// 当前选中的日期值,这个在父类中已经设置了 //OB.RemoveProperty(OptionName.Value); //if (SelectedDate != null) OB.AddProperty(OptionName.Value, Text); if (MaxDate != null) { OB.AddProperty("maxValue", MaxDate.Value.ToString(DateFormatString)); } if (MinDate != null) { OB.AddProperty("minValue", MinDate.Value.ToString(DateFormatString)); } if (!EnableEdit) { OB.AddProperty("editable", false); } if (EnableDateSelectEvent) { OB.Listeners.AddProperty("select", JsHelper.GetFunction(GetPostBackEventReference("Select")), true); } string jsContent = String.Format("var {0}=Ext.create('Ext.form.field.Date',{1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); if (AutoGrowHeight) { OB.AddProperty("grow", AutoGrowHeight); if (AutoGrowHeightMax.Value != 1000) { OB.AddProperty("growMax", AutoGrowHeightMax.Value); } if (AutoGrowHeightMin.Value != 60) { OB.AddProperty("growMin", AutoGrowHeightMin.Value); } if (HideScrollbars) { OB.AddProperty("preventScrollbars", true); } } // 如果Text属性存在于XState中,则不要重复设置value属性,而是在render事件中使用XState的值 if (XState.ModifiedProperties.Contains("Text")) { OB.RemoveProperty("value"); OB.Listeners.AddProperty("render", JsHelper.GetFunction("cmp.x_setValue();", "cmp"), true); } //// 自动增长的最小高度要么等于高度,要么等于50(最小值) //if (AutoGrowHeight) //{ // Unit height = (Unit)50; // if (Height != Unit.Empty) // { // height = Height; // } // OB.AddProperty("growMin", height.Value); //} string jsContent = String.Format("var {0}=new Ext.form.TextArea({1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); if (!String.IsNullOrEmpty(EmptyText)) { OB.AddProperty("emptyText", EmptyText); } if (!String.IsNullOrEmpty(Text)) { OB.AddProperty("value", Text); } if (AutoPostBack) { OB.Listeners.AddProperty("change", JsHelper.GetFunction(GetPostBackEventReference()), true); #region old code //// First remove change event, because we has already register this event in super class - Field. //OB.Listeners.RemoveProperty("change"); //string changeScript = "F.util.setPageStateChanged();"; //changeScript += GetPostBackEventReference(); //OB.Listeners.AddProperty("change", JsHelper.GetFunction(changeScript), true); //else if (EnableServerValidate) //{ // // The Validate event will not be triggered when the filed fail to pass the client side validte. // //changeScript += String.Format("if(X.{0}.isValid()){{{1}}}", ClientJavascriptID, GetPostBackEventReference("Validate")); //} //else if (AutoPostBack && EnableServerValidate) //{ // changeScript += GetPostBackEventReference("#VALIDATE#").Replace("'#VALIDATE#'", String.Format("{0}.isValid() ? 'Validate' : ''")); //} #endregion } if (EnableBlurEvent) { OB.Listeners.AddProperty("blur", JsHelper.GetFunction(GetPostBackEventReference("Blur")), true); } //if (EnableServerValidate) //{ // OB.Listeners.AddProperty("blur", JsHelper.GetFunctionWrapper(GetPostBackEventReference("Validate")), true); //} }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); #region options OB.AddProperty("checked", Checked); if (!String.IsNullOrEmpty(Text)) { OB.AddProperty("boxLabel", Text); } if (!String.IsNullOrEmpty(GroupName)) { OB.RemoveProperty("name"); OB.AddProperty("name", GroupName); // <input type="radio" name="MyRadioGroup1" id="SimpleForm1_rbtnSecond" value="SimpleForm1_rbtnSecond"> OB.AddProperty("inputValue", ClientID); } #endregion #region AutoPostBack //if (AutoPostBack) //{ // OB.Listeners.AddProperty("check", JsHelper.GetFunction(GetPostBackEventReference()), true); //} string checkScript = String.Empty; if (!String.IsNullOrEmpty(GroupName)) { checkScript = "if(X.util.checkGroupLastTime('" + GroupName + "')){" + GetPostBackEventReference() + "}"; } else { checkScript = GetPostBackEventReference(); } OB.Listeners.AddProperty("check", JsHelper.GetFunction(checkScript), true); #endregion string jsContent = String.Format("var {0}=new Ext.form.Radio({1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(AJAX回发) /// </summary> protected override void OnAjaxPreRender() { base.OnAjaxPreRender(); StringBuilder sb = new StringBuilder(); if (PropertyModified("Text")) { sb.AppendFormat("{0}.x_setText();", XID); } if (EnablePress) { if (PropertyModified("Pressed")) { //if (ClientPropertyModifiedInServer("Pressed")) sb.AppendFormat("{0}.x_toggle();", XID); } } if (PropertyModified("Icon", "IconUrl")) { string resolvedIconUrl = IconHelper.GetResolvedIconUrl(Icon, IconUrl); if (!String.IsNullOrEmpty(resolvedIconUrl)) { sb.AppendFormat("{0}.setIcon({1});", XID, JsHelper.Enquote(resolvedIconUrl)); } } if (PropertyModified("ToolTip")) { sb.AppendFormat("{0}.x_setTooltip();", XID); } if (PropertyModified("OnClientClick", "ConfirmTitle", "ConfirmText", "ConfirmTarget", "ConfirmIcon")) { //sb.AppendFormat("{0}.un('click', {0}.initialConfig.listeners.click);", XID); //sb.AppendFormat("{0}.on('click',{1});", XID, GetClickScriptFunction()); sb.AppendFormat("{0}.setHandler({1});", XID, JsHelper.GetFunction(GetClickScript())); } AddAjaxScript(sb); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); AddStartupAbsoluteScript("X.form_upload_file=true;"); if (!String.IsNullOrEmpty(ButtonText)) { OB.AddProperty("buttonText", ButtonText); } if (ButtonOnly) { OB.AddProperty("buttonOnly", true); } string resolvedIconUrl = IconHelper.GetResolvedIconUrl(ButtonIcon, ButtonIconUrl); if (!String.IsNullOrEmpty(resolvedIconUrl)) { OptionBuilder buttonOB = new OptionBuilder(); buttonOB.AddProperty("cls", " x-btn-text-icon"); buttonOB.AddProperty("icon", resolvedIconUrl); OB.AddProperty("buttonCfg", buttonOB); } //if (TextMode != TextMode.Text) //{ // OB.AddProperty("inputType", TextModeHelper.GetName(TextMode)); //} if (AutoPostBack) { OB.Listeners.RemoveProperty("change"); OB.Listeners.AddProperty("fileselected", JsHelper.GetFunction(GetPostBackEventReference()), true); } string jsContent = String.Format("var {0}=new Ext.ux.form.FileUploadField({1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); #region options OB.AddProperty("checked", Checked); if (!String.IsNullOrEmpty(Text)) { OB.AddProperty("boxLabel", Text); } if (!String.IsNullOrEmpty(GroupName)) { OB.RemoveProperty("name"); OB.AddProperty("name", GroupName); OB.AddProperty("inputValue", ClientID); } #endregion #region AutoPostBack if (AutoPostBack) { string checkScript = String.Empty; if (!String.IsNullOrEmpty(GroupName)) { checkScript = "if(F.util.checkGroupLastTime('" + GroupName + "')){" + GetPostBackEventReference() + "}"; } else { checkScript = GetPostBackEventReference(); } OB.Listeners.AddProperty("change", JsHelper.GetFunction(checkScript), true); } #endregion string jsContent = String.Format("var {0}=Ext.create('Ext.form.field.Radio',{1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); // extjs 的日期格式化字符串 string extjsDateFormatString = ExtDateTimeConvertor.ConvertToExtDateFormat(DateFormatString); OB.AddProperty("format", extjsDateFormatString); //if (EnableChineseAltFormats) //{ // OB.AddProperty("altFormats", "Y-m-d|Y-n-j|Ymd|Ynj|y-m-d|y-n-j|ymd|ynj"); //} if (SelectedDate != null) { OB.AddProperty("value", ExtDateTimeConvertor.GetExtDateObject(SelectedDate.Value), true); } if (MaxDate != null) { OB.AddProperty("maxDate", ExtDateTimeConvertor.GetExtDateObject(MaxDate.Value), true); } if (MinDate != null) { OB.AddProperty("minDate", ExtDateTimeConvertor.GetExtDateObject(MinDate.Value), true); } if (EnableDateSelectEvent) { OB.Listeners.AddProperty("select", JsHelper.GetFunction(GetPostBackEventReference("Select")), true); } string jsContent = String.Format("var {0}=Ext.create('Ext.picker.Date',{1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); #region options if (!ShowTrigger) { OB.AddProperty("hideTrigger", true); } if (!ShowTrigger1) { OB.AddProperty("hideTrigger1", true); } if (!ShowTrigger2) { OB.AddProperty("hideTrigger2", true); } if (!EnableEdit) { OB.AddProperty("editable", false); } #endregion #region Trigger1Icon/Trigger2Icon if (Trigger1Icon != TriggerIcon.None) { OB.AddProperty("trigger1Class", TriggerIconHelper.GetName(Trigger1Icon)); } else if (!String.IsNullOrEmpty(Trigger1IconUrl)) { string className = String.Format("fineui_{0}_twintriggerbox_icon1", XID); string selector = String.Format(".x-form-field-wrap .x-form-twin-triggers .{0}", className); AddStartupCSS(className, StyleUtil.GetBackgroundStyle(selector, ResolveUrl(Trigger1IconUrl))); OB.AddProperty("trigger1Class", className); } if (Trigger2Icon != TriggerIcon.None) { OB.AddProperty("trigger2Class", TriggerIconHelper.GetName(Trigger2Icon)); } else if (!String.IsNullOrEmpty(Trigger2IconUrl)) { string className = String.Format("fineui_{0}_twintriggerbox_icon2", XID); string selector = String.Format(".x-form-field-wrap .x-form-twin-triggers .{0}", className); AddStartupCSS(className, StyleUtil.GetBackgroundStyle(selector, ResolveUrl(Trigger2IconUrl))); OB.AddProperty("trigger2Class", className); } #endregion #region Trigger1Click/Trigger1Click if (Enabled) { string clientTrigger1ClickScript = OnClientTrigger1Click; if (!String.IsNullOrEmpty(clientTrigger1ClickScript) && !clientTrigger1ClickScript.EndsWith(";")) { clientTrigger1ClickScript += ";"; } string trigger1PostbackScript = String.Empty; if (EnableTrigger1PostBack) { trigger1PostbackScript = GetPostBackEventReference("Trigger$1"); } //string trigger1ClickScript = String.Format("function(){{{0}}}", clientTrigger1ClickScript + trigger1PostbackScript); //// createDelegate 用来为一个Function创建一个Scope //OB.AddProperty(OptionName.OnTrigger1Click, String.Format("({0}).createDelegate(box)", trigger1ClickScript), true); OB.AddProperty("onTrigger1Click", JsHelper.GetFunction(clientTrigger1ClickScript + trigger1PostbackScript), true); string clientTrigger2ClickScript = OnClientTrigger2Click; if (!String.IsNullOrEmpty(clientTrigger2ClickScript) && !clientTrigger2ClickScript.EndsWith(";")) { clientTrigger2ClickScript += ";"; } string trigger2PostbackScript = String.Empty; if (EnableTrigger2PostBack) { trigger2PostbackScript = GetPostBackEventReference("Trigger$2"); } //string trigger2ClickScript = String.Format("function(){{{0}}}", clientTrigger2ClickScript + Trigger2PostbackScript); //// createDelegate 用来为一个Function创建一个Scope //OB.AddProperty(OptionName.OnTrigger2Click, String.Format("({0}).createDelegate(box)", trigger2ClickScript), true); OB.AddProperty("onTrigger2Click", JsHelper.GetFunction(clientTrigger2ClickScript + trigger2PostbackScript), true); } #endregion #region Specialkey if (Enabled) { // 首先启用enableKeyEvents //OB.AddProperty("enableKeyEvents", true); OB.Listeners.AddProperty("specialkey", String.Format("function(field,e){{if(e.getKey()==e.ENTER){{{0}.onTrigger2Click();e.stopEvent();}}}}", XID), true); } #endregion #region old code //string renderScript = String.Empty; ////// 只禁用文本框,不禁用Trigger ////if (!EnableTextBox) ////{ //// //AddAbsoluteStartupScript(String.Format("{0}.el.dom.disabled=true;", ClientJavascriptID)); //// renderScript += String.Format("{0}.el.dom.disabled=true;", ClientJavascriptID); ////} //if (AjaxPropertyChanged("ShowTrigger1", ShowTrigger1)) //{ // AddAjaxPropertyChangedScript(String.Format("{0}.getTrigger(0).{1}();", XID, ShowTrigger1 ? "show" : "hide")); //} //if (AjaxPropertyChanged("ShowTrigger2", ShowTrigger2)) //{ // AddAjaxPropertyChangedScript(String.Format("{0}.getTrigger(1).{1}();", XID, ShowTrigger2 ? "show" : "hide")); //} //renderScript = "(function(){" + renderScript + "}).defer(20);"; //OB.Listeners.AddProperty("render", "function(component){" + renderScript + "}", true); #endregion string jsContent = String.Format("var {0}=new Ext.form.TwinTriggerField({1});", XID, OB.ToString()); AddStartupScript(jsContent); }
protected override void OnFirstPreRender() { base.OnFirstPreRender(); #region options if (!ShowTrigger) { OB.AddProperty("hideTrigger", true); } if (!EnableEdit) { OB.AddProperty("editable", false); } #endregion #region TriggerIcon if (TriggerIcon != TriggerIcon.None) { OB.AddProperty("triggerClass", TriggerIconHelper.GetName(TriggerIcon)); } else if (!String.IsNullOrEmpty(TriggerIconUrl)) { string className = String.Format("fineui_{0}_triggerbox_icon", XID); string selector = String.Format(".x-form-field-wrap .{0}", className); AddStartupCSS(className, StyleUtil.GetBackgroundStyle(selector, ResolveUrl(TriggerIconUrl))); OB.AddProperty("triggerClass", className); } #endregion #region TriggerClick if (Enabled) { string clientClickScript = OnClientTriggerClick; if (!String.IsNullOrEmpty(clientClickScript) && !clientClickScript.EndsWith(";")) { clientClickScript += ";"; } string postbackScript = String.Empty; if (EnablePostBack) { postbackScript = GetPostBackEventReference(); } OB.AddProperty("onTriggerClick", JsHelper.GetFunction(clientClickScript + postbackScript), true); } #endregion #region Specialkey if (Enabled) { // 首先启用enableKeyEvents //OB.AddProperty("enableKeyEvents", true); OB.Listeners.AddProperty("specialkey", String.Format("function(field,e){{if(e.getKey()==e.ENTER){{{0}.onTriggerClick();e.stopEvent();}}}}", XID), true); //OB.Listeners.AddProperty("keydown", JsHelper.GetFunction("var i=0;"), true); } #endregion #region old code //// 只禁用文本框,不禁用Trigger //if (Readonly) //{ // //OB.AddProperty(OptionName.Disabled, true); // //AddAbsoluteStartupScript( String.Format("{0}.el.dom.disabled=true;", ClientID)); // //OB.Listeners.AddProperty(OptionName.Focus, String.Format("function(field){{field.blur.defer(10,field);\r\n}}"), true); // //OB.Listeners.AddProperty(OptionName.Keydown, String.Format("function(){{return false;}}"), true); // // 晕,最后的解决方案居然是设置 readonly=true // OB.AddProperty(OptionName.ReadOnly, true); // //string cssClassName = CssClass; // //cssClassName += "x-item-disabled"; // //OB.RemoveProperty(OptionName.Cls); // //OB.AddProperty(OptionName.Cls, cssClassName); // //OB.AddProperty(OptionName.FocusClass, ""); //} #endregion string jsContent = String.Format("var {0}=new Ext.form.TriggerField({1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { // 确保 X_Items 和 SelectedValue 在页面第一次加载时都存在于x_state中 XState.AddModifiedProperty("X_Items"); XState.AddModifiedProperty("SelectedValueArray"); base.OnFirstPreRender(); #region options if (Required) { OB.AddProperty("allowBlank", false); if (!String.IsNullOrEmpty(RequiredMessage)) { OB.AddProperty("blankText", RequiredMessage); } } OB.RemoveProperty("name"); if (ColumnNumber <= 0) { OB.AddProperty("columns", "auto"); } else { OB.AddProperty("columns", ColumnNumber); } if (ColumnVertical) { OB.AddProperty("vertical", true); } //OB.AddProperty("name", UniqueID); #endregion #region Items /* * string xstateName = String.Format("{0}_xstate", XID); * string xitemsName = String.Format("{0}_xitems", XID); * string hasDataName = xstateName; * * string xstate = OB.GetProperty("x_state"); * OB.AddProperty("x_state", xstateName, true); * * string jsState = String.Format("var {0}={1};", xstateName, xstate); * * if (!XState.ModifiedProperties.Contains("X_Items")) * { * xstate = ConvertPropertiesToJObject(new List<string> { "X_Items", "SelectedValueArray" }).ToString(Formatting.None); * jsState += String.Format("var {0}={1};", xitemsName, xstate); * hasDataName = xitemsName; * } * * OB.AddProperty("items", String.Format("X.util.resolveCheckBoxGroup('{0}',{1},false)", UniqueID, hasDataName), true); */ OB.AddProperty("items", String.Format("X.util.resolveCheckBoxGroup('{0}',{1},false)", UniqueID, GetXStateScriptID()), true); if (Items.Count == 0) { OB.Listeners.AddProperty("afterrender", JsHelper.GetFunction("cmp.x_toBeDeleted();", "cmp"), true); } #endregion #region AutoPostBack if (AutoPostBack) { // 道理和RadioButtonList类似。 OB.Listeners.AddProperty("change", String.Format("function(group,checkedArray){{if(typeof(checkedArray)!=='boolean'){{{0}}}}}", GetPostBackEventReference()), true); } /* * if (!String.IsNullOrEmpty(SelectedValue)) * { * OB.AddProperty("value", SelectedValue); * } */ #region old code //string autoPostBackScript = String.Empty; //if (AutoPostBack) //{ // //// change 事件只有在失去焦点时才触发,是不及时的 // //OB.Listeners.RemoveProperty(OptionName.Change); // //OB.Listeners.AddProperty(OptionName.Check, String.Format("function(newValue,oldValue){{\r\nbox_pageStateChange();alert(newValue+':'+oldValue);\r\n}}"), true); // string selectScript = String.Format("function(newValue,oldValue){{\r\nalert(newValue+':'+oldValue);\r\n}}"); // selectScript = String.Format("{0}.on('{1}',{2},box,{{delay:0}});", ClientID, OptionName.Check, selectScript); // autoPostBackScript += selectScript; //} //string backgroundColorStyle = String.Empty; //if (EnableBackgroundColor) //{ // backgroundColorStyle = AboutConfig.GetDefaultBackgroundColor(PageManagerInstance.Theme.ToString()); //} //else if (EnableLightBackgroundColor) //{ // backgroundColorStyle = AboutConfig.GetLightBackgroundColor(PageManagerInstance.Theme.ToString()); //} //if (!String.IsNullOrEmpty(backgroundColorStyle)) //{ // string backgroundColorScript = String.Format("Ext.each(X.{0}.el.query('.x-panel-body'),function(item,index){{Ext.get(item).setStyle('background-color','{1}');}});", ClientJavascriptID, backgroundColorStyle); // string renderScript = "(function(){" + backgroundColorScript + "}).defer(20);"; // OB.Listeners.AddProperty("render", "function(component){" + renderScript + "}", true); //} #endregion #endregion string jsContent = String.Format("var {0}=new Ext.form.CheckboxGroup({1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); #region options if (Required) { OB.AddProperty("allowBlank", false); if (!String.IsNullOrEmpty(RequiredMessage)) { OB.AddProperty("blankText", RequiredMessage); } } OB.RemoveProperty("name"); if (ColumnNumber <= 0) { OB.AddProperty("columns", "auto"); } else { OB.AddProperty("columns", ColumnNumber); } if (ColumnVertical) { OB.AddProperty("vertical", true); } #endregion #region Items string xstateName = String.Format("{0}_xstate", XID); string xitemsName = String.Format("{0}_xitems", XID); string hasDataName = xstateName; string xstate = OB.GetProperty("x_state"); OB.AddProperty("x_state", xstateName, true); string jsState = String.Format("var {0}={1};", xstateName, xstate); if (!XState.ModifiedProperties.Contains("X_Items")) { xstate = ConvertPropertiesToJObject(new List <string> { "X_Items", "SelectedValue" }).ToString(Formatting.None); jsState += String.Format("var {0}={1};", xitemsName, xstate); hasDataName = xitemsName; } //if (Items.Count > 0) //{ // //OB.AddProperty("items", GetItemsJArray().ToString(Formatting.None), true); // OB.AddProperty("items", String.Format("X.util.resolveCheckBoxGroup('{0}',{1})", UniqueID, hasDataName), true); //} OB.AddProperty("items", String.Format("X.util.resolveCheckBoxGroup('{0}',{1},true)", UniqueID, hasDataName), true); if (Items.Count == 0) { OB.Listeners.AddProperty("afterrender", JsHelper.GetFunction("cmp.x_toBeDeleted();", "cmp"), true); } #endregion #region AutoPostBack if (AutoPostBack) { // This event will be triggered twice, so we must filter the actually change. // If the current checked radio is losing focus, this function will alse be called and the radio parameter is true. // 改变选中项时,这个事件会被触发两次。 // 当前选中项失去焦点时,这个回调函数也会被触发并设置radio为true。 OB.Listeners.AddProperty("change", String.Format("function(group,radio){{if(typeof(radio)!=='boolean'){{{0}}}}}", GetPostBackEventReference()), true); } //if (!String.IsNullOrEmpty(SelectedValue)) //{ // OB.AddProperty("value", SelectedValue); //} #region old code //string autoPostBackScript = String.Empty; //if (AutoPostBack) //{ // //// change 事件只有在失去焦点时才触发,是不及时的 // //OB.Listeners.RemoveProperty(OptionName.Change); // //OB.Listeners.AddProperty(OptionName.Check, String.Format("function(newValue,oldValue){{\r\nbox_pageStateChange();alert(newValue+':'+oldValue);\r\n}}"), true); // string selectScript = String.Format("function(newValue,oldValue){{\r\nalert(newValue+':'+oldValue);\r\n}}"); // selectScript = String.Format("{0}.on('{1}',{2},box,{{delay:0}});", ClientID, OptionName.Check, selectScript); // autoPostBackScript += selectScript; //} //string backgroundColorStyle = String.Empty; //if (EnableBackgroundColor) //{ // backgroundColorStyle = AboutConfig.GetDefaultBackgroundColor(PageManagerInstance.Theme.ToString()); //} //else if (EnableLightBackgroundColor) //{ // backgroundColorStyle = AboutConfig.GetLightBackgroundColor(PageManagerInstance.Theme.ToString()); //} //if (!String.IsNullOrEmpty(backgroundColorStyle)) //{ // string backgroundColorScript = String.Format("Ext.each(X.{0}.el.query('.x-panel-body'),function(item,index){{Ext.get(item).setStyle('background-color','{1}');}});", ClientJavascriptID, backgroundColorStyle); // string renderScript = "(function(){" + backgroundColorScript + "}).defer(20);"; // OB.Listeners.AddProperty("render", "function(component){" + renderScript + "}", true); //} #endregion #endregion string jsContent = String.Format("var {0}=new Ext.form.RadioGroup({1});", XID, OB.ToString()); AddStartupScript(jsState + jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); //ResourceManager.Instance.AddJavaScriptComponent("tab"); //if (EnableTabCloseMenu) //{ // ResourceManager.Instance.AddJavaScriptComponent("menu"); //} #region Tabs if (Tabs.Count > 0) { JsArrayBuilder ab = new JsArrayBuilder(); foreach (Tab tab in Tabs) { if (tab.Visible) { ab.AddProperty(String.Format("{0}", tab.XID), true); } } OB.AddProperty("items", ab.ToString(), true); } #endregion #region options // 删除Layout配置参数 OB.RemoveProperty("layout"); //OB.AddProperty(OptionName.TabMargin, TabMargin.Value); OB.AddProperty("tabPosition", TabPositionHelper.GetName(TabPosition)); //if (Plain) OB.AddProperty(OptionName.Plain, Plain); if (!EnableTitleBackgroundColor) { OB.AddProperty("plain", true); } // 去掉deferredRender=true,渲染速度会提高200ms左右 // 每个Tab是否只在第一次访问时渲染,false表示全部渲染,否则没有访问的Tab的内容渲染的位置不正确。 OB.AddProperty("deferredRender", EnableDeferredRender); //OB.AddProperty("bufferResize", true); //// 在切换Tab时重新布局Tab的内容 //OB.AddProperty("layoutOnTabChange", true); //OB.AddProperty("enableTabScroll", true); if (EnableTabCloseMenu) { OB.AddProperty("plugins", "Ext.create('Ext.ux.TabCloseMenu')", true); } ////Note: By default, a tab's close tool destroys the child tab Component and all its descendants. //// This makes the child tab Component, and all its descendants unusable. //// To enable re-use of a tab, configure the TabPanel with autoDestroy: false. //OB.AddProperty("autoDestroy", false); #endregion #region ActiveTabIndex/IFrameDelayLoad OB.AddProperty("activeTab", ActiveTabIndex); //for (int i = 0; i < Tabs.Count; i++) //{ // Tab tab = Tabs[i]; // if (tab.EnableIFrame && i != ActiveTabIndex) // { // // 拥有IFrame的Tab如果不是激活Tab,则不设置Url,只有在激活时才设置Url // tab.IFrameDelayLoad = true; // } // else // { // tab.IFrameDelayLoad = false; // } //} #endregion #region Listeners #region old code // 如果存在Tabs集合 //if (Tabs.Count > 0) //{ // JsArrayBuilder ab = new JsArrayBuilder(); // foreach (Tab tab in Tabs) // { // ab.AddProperty(String.Format("{0}", tab.ClientID), true); // } // OB.AddProperty(OptionName.Items, ab.ToString(), true); //} // listeners //JsObjectBuilder listenersBuilder = new JsObjectBuilder(); //listenersBuilder.AddProperty(OptionName.Tabchange, String.Format("function(tabPanel, activeTab){{Ext.get('{0}').dom.value=tabPanel.items.indexOf(activeTab);}}", ActiveTabHiddenField.ClientID), true); //OBuilder.AddProperty("listeners", listenersBuilder.ToString(), true); #endregion // 如果要激活的Tab含有IFrame,则需要加载IFrame // 改变Tab需要回发的脚本 // Make sure X_AutoPostBackTabs property exist in F_STATE during page's first load. //string tabchangeScript2 = String.Format("if(tabPanel.f_autoPostBackTabsContains(tab.id)){{{0}}}", GetPostBackEventReference()); string tabchangeScript = "F.wnd.updateIFrameNode(tab);"; string postbackScript = String.Empty; if (AutoPostBack) { tabchangeScript += "if(!tab.f_dynamic_added_tab){" + GetPostBackEventReference("TabIndexChanged") + "}"; } // 如果是动态添加的Tab,不做任何处理(在js/box/extender.js中) //string tabchangeScript = "F.wnd.updateIFrameNode(tab);if(!tab.f_dynamic_added_tab){" + postbackScript + "}"; OB.Listeners.AddProperty("tabchange", JsHelper.GetFunction(tabchangeScript, "tabPanel", "tab"), true); #endregion #region old code //// 添加隐藏字段 //string needPostBackTabIDsScript = GetNeedPostBackTabIDsScript(); //hiddenFieldsScript += needPostBackTabIDsScript; //if (AjaxPropertyChanged("NeedPostBackTabIdsScript", needPostBackTabIDsScript)) //{ // AddAjaxPropertyChangedScript(needPostBackTabIDsScript); //} //hiddenFieldsScript += GetSetHiddenFieldValueScript(ActiveTabHiddenFieldID, ActiveTabIndex.ToString().ToLower()); #endregion #region old code //// An bug in IE. //string renderScript = "if(Ext.isIE){(function(){this.getActiveTab().removeClass('x-hide-display');}).defer(20,this);}"; //OB.Listeners.AddProperty("render", JsHelper.GetFunction(renderScript), true); #endregion string jsContent = String.Format("var {0}=Ext.create('Ext.tab.Panel',{1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); #region options if (!ShowTrigger) { OB.AddProperty("hideTrigger", true); } if (!EnableEdit) { OB.AddProperty("editable", false); } string renderScript = String.Empty; if (!ShowTrigger1) { renderScript += String.Format("this.triggerCell.item(0).setDisplayed(false);"); } if (!ShowTrigger2) { renderScript += String.Format("this.triggerCell.item(1).setDisplayed(false);"); } if (!String.IsNullOrEmpty(renderScript)) { //renderScript += "this.updateLayout();"; OB.Listeners.AddProperty("afterrender", JsHelper.GetFunction(renderScript), true); } #endregion #region Trigger1Icon/Trigger2Icon if (Trigger1Icon != TriggerIcon.None) { OB.AddProperty("trigger1Cls", TriggerIconHelper.GetName(Trigger1Icon)); } else if (!String.IsNullOrEmpty(Trigger1IconUrl)) { string className = String.Format("f_{0}_twintriggerbox_icon1", XID); string selector = String.Format(".x-form-field-wrap .x-form-twin-triggers .{0}", className); AddStartupCSS(className, StyleUtil.GetBackgroundStyle(selector, ResolveUrl(Trigger1IconUrl))); OB.AddProperty("trigger1Cls", className); } if (Trigger2Icon != TriggerIcon.None) { OB.AddProperty("trigger2Cls", TriggerIconHelper.GetName(Trigger2Icon)); } else if (!String.IsNullOrEmpty(Trigger2IconUrl)) { string className = String.Format("f_{0}_twintriggerbox_icon2", XID); string selector = String.Format(".x-form-field-wrap .x-form-twin-triggers .{0}", className); AddStartupCSS(className, StyleUtil.GetBackgroundStyle(selector, ResolveUrl(Trigger2IconUrl))); OB.AddProperty("trigger2Cls", className); } #endregion #region Trigger1Click/Trigger1Click if (Enabled) { string clientTrigger1ClickScript = OnClientTrigger1Click; if (!String.IsNullOrEmpty(clientTrigger1ClickScript) && !clientTrigger1ClickScript.EndsWith(";")) { clientTrigger1ClickScript += ";"; } string trigger1PostbackScript = String.Empty; if (EnableTrigger1PostBack) { trigger1PostbackScript = GetPostBackEventReference("Trigger$1"); } //string trigger1ClickScript = String.Format("function(){{{0}}}", clientTrigger1ClickScript + trigger1PostbackScript); //// createDelegate 用来为一个Function创建一个Scope //OB.AddProperty(OptionName.OnTrigger1Click, String.Format("({0}).createDelegate(box)", trigger1ClickScript), true); OB.AddProperty("onTrigger1Click", JsHelper.GetFunction(clientTrigger1ClickScript + trigger1PostbackScript), true); string clientTrigger2ClickScript = OnClientTrigger2Click; if (!String.IsNullOrEmpty(clientTrigger2ClickScript) && !clientTrigger2ClickScript.EndsWith(";")) { clientTrigger2ClickScript += ";"; } string trigger2PostbackScript = String.Empty; if (EnableTrigger2PostBack) { trigger2PostbackScript = GetPostBackEventReference("Trigger$2"); } //string trigger2ClickScript = String.Format("function(){{{0}}}", clientTrigger2ClickScript + Trigger2PostbackScript); //// createDelegate 用来为一个Function创建一个Scope //OB.AddProperty(OptionName.OnTrigger2Click, String.Format("({0}).createDelegate(box)", trigger2ClickScript), true); OB.AddProperty("onTrigger2Click", JsHelper.GetFunction(clientTrigger2ClickScript + trigger2PostbackScript), true); } #endregion #region Specialkey if (Enabled) { // 首先启用enableKeyEvents //OB.AddProperty("enableKeyEvents", true); OB.Listeners.AddProperty("specialkey", String.Format("function(field,e){{if(e.getKey()==e.ENTER){{{0}.onTrigger2Click();e.stopEvent();}}}}", XID), true); } #endregion // F('SimpleForm1_ttbxMyBox2').triggerEl.item(0).show(); string jsContent = String.Format("var {0}=Ext.create('Ext.form.field.Trigger',{1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); ResourceManager.Instance.AddJavaScriptComponent("form"); #region Options //JsObjectBuilder fieldDefaults = new JsObjectBuilder(); //if (LabelWidth.Value != ConfigPropertyValue.FORM_LABELWIDTH_DEFAULT) //{ // fieldDefaults.AddProperty("labelWidth", LabelWidth.Value); //} //if (LabelSeparator != ConfigPropertyValue.FORM_LABELSEPARATOR_DEFAULT) //{ // fieldDefaults.AddProperty("labelSeparator", LabelSeparator); //} //if (fieldDefaults.Count > 0) //{ // OB.AddProperty("fieldDefaults", fieldDefaults); //} if (LabelWidth.Value != ConfigPropertyValue.FORM_LABELWIDTH_DEFAULT) { OB.AddProperty("labelWidth", LabelWidth.Value); } if (LabelSeparator != ConfigPropertyValue.FORM_LABELSEPARATOR_DEFAULT) { OB.AddProperty("labelSeparator", LabelSeparator); } if (LabelAlign != LabelAlign.Left) { OB.AddProperty("labelAlign", LabelAlignHelper.GetName(LabelAlign)); } #endregion #region ResolveRows // 包含行的列脚本 string rowScriptStr = String.Empty; // 行的集合 string rowItemScriptStr = String.Empty; // 如果存在Rows集合 if (Rows.Count > 0) { // rowScriptStr // rowItemScriptStr: [X.__Panel1_UpdatePanelConnector1_Panel7_Form5_row0,X.__Panel1_UpdatePanelConnector1_Panel7_Form5_row2] ResolveRows(ref rowScriptStr, ref rowItemScriptStr); // 添加Items OB.RemoveProperty("items"); OB.AddProperty("items", rowItemScriptStr, true); } //rowScriptStr += "\r\n"; #endregion // This bug has been fixed in extjs v3.4.0. // Do layout when body size changed - I don't know why extjs do it automatically. // Why panel.layout.layout? Because Form outside layout doesn't has this function, why? I don't know now. //OB.Listeners.AddProperty("bodyresize", "function(panel){if(panel.layout.layout){panel.doLayout();}}", true); OB.Listeners.AddProperty("change", JsHelper.GetFunction("X.util.setPageStateChanged();"), true); string formPanelScript = String.Format("var {0}=new Ext.Panel({1});", XID, OB.ToString()); //AddStartupScript(this, rowScriptStr + formPanelScript); string jsContent = rowScriptStr + formPanelScript; AddStartupScript(jsContent); #region oldcode //string doLayoutScript = String.Empty; //doLayoutScript += String.Format("Ext.EventManager.onWindowResize(function(){{X.{0}.doLayout();}});", ClientJavascriptID); //AddPageFirstLoadAbsoluteScript(doLayoutScript); #endregion }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); #region Check Parent Accordion parentControl = Parent as Accordion; if (parentControl == null) { throw new Exception("AccordionPane must inside the control Accordion!"); } if (parentControl.AutoPostBack) { OB.Listeners.AddProperty("expand", JsHelper.GetFunction(parentControl.GetPostBackEventReference("PaneIndexChanged")), true); } #endregion //#region AutoHeight //// 如果要充满整个Accordion,则设置每个AccordionPanel的AutoHeight=false //if (parentControl.EnableFill) //{ // OB.AddProperty("autoHeight", false); //} //#endregion string renderScript = String.Empty; #region oldcode //// 如果启用高亮显示选中的,则在每个AccordionPanel的折叠展开时都要改变高亮选中的状态 //if (EnableLargeHeader && EnableHightlight) //{ // renderScript += String.Format("{0}.header.addClassOnOver('{1}');", XID, ACCORDION_HEADER_HOVER); // // 如果这个AccordionPanel需要高亮显示 // if (parentControl.ActiveIndex >= 0 && parentControl.ActiveIndex < parentControl.Panes.Count) // { // if (parentControl.Panes[parentControl.ActiveIndex] == this) // { // //OB.AddProperty(OptionName.Cls, ACCORDION_BIG_HEADER_SELECT_CLASS); // renderScript += String.Format("{0}.header.addClass('{1}');", XID, ACCORDION_HEADER_SELECT); // } // } // OB.Listeners.RemoveProperty("collapse"); // OB.Listeners.RemoveProperty("expand"); // OB.Listeners.AddProperty("collapse", String.Format("function(panel){{Ext.get('{0}').dom.value=true;X.{1}.header.removeClass('{2}');}}", CollapsedHiddenFieldID, XID, ACCORDION_HEADER_SELECT), true); // OB.Listeners.AddProperty("expand", String.Format("function(panel){{Ext.get('{0}').dom.value=false;X.{1}.header.addClass('{2}');}}", CollapsedHiddenFieldID, XID, ACCORDION_HEADER_SELECT), true); //} #endregion #region Links //if (Links.Count > 0) //{ // OB.RemoveProperty("items"); // StringBuilder sb = new StringBuilder(); // sb.Append("<ul class=\"f-accrodion-link-ul\">"); // foreach (AccordionLink link in Links) // { // #region li // HtmlNodeBuilder nb = new HtmlNodeBuilder("a"); // nb.SetProperty("id", link.ClientID); // if (!String.IsNullOrEmpty(link.OnClientClick)) // { // nb.SetProperty("onclick", String.Format("javascript:{0}", link.OnClientClick)); // } // if (!String.IsNullOrEmpty(link.NavigateUrl)) // { // nb.SetProperty("href", ResolveUrl(link.NavigateUrl)); // if (!String.IsNullOrEmpty(link.Target)) // { // nb.SetProperty("target", link.Target); // } // } // nb.SetProperty("style", "display:block;cursor:pointer;"); // string content = String.Empty; // if (!String.IsNullOrEmpty(link.IconUrl)) // { // content += String.Format("<img src=\"{0}\" align=\"bottom\" alt=\"\" />", ResolveUrl(link.IconUrl)); // } // content += " " + link.Text; // nb.InnerProperty = content; // #endregion // sb.AppendFormat("<li {1}>{0}</li>", nb.ToString(), link.Selected ? "class=\"f-accrodion-link-select\"" : ""); // } // sb.Append("</ul>"); // OB.AddProperty("html", sb.ToString()); // // 注册所有链接的脚本 // // 所有的li,鼠标移动上去是一种样式,鼠标移开又是另外一种样式 // string hoverScript = "ele = Ext.get(ele);"; // hoverScript += "ele.on('mouseover',function(){Ext.get(this.findParentNode('li')).addClass('box-accrodion-link-hover');},ele);"; // hoverScript += "ele.on('mouseout',function(){Ext.get(this.findParentNode('li')).removeClass('box-accrodion-link-hover');},ele);"; // //string clickScript = String.Empty; // //clickScript += String.Format("Ext.each(X.{0}.el.query('ul.box-accrodion-link-ul li'),function(ele){{Ext.get(ele).removeClass('box-accrodion-link-select');}});", parentControl.ClientJavascriptID); // //clickScript += "Ext.get('{0}').addClass('box-accrodion-link-select');"; // string clickScript = String.Format("function(){{X.{0}.box_active(ele.id);}}", parentControl.XID); // hoverScript += "ele.on('click'," + clickScript + ");"; // renderScript += String.Format("Ext.each(X.{0}.el.query('ul.box-accrodion-link-ul li a'),function(ele){{{1}}});", XID, hoverScript); //} #endregion if (!String.IsNullOrEmpty(renderScript)) { renderScript = JsHelper.GetDeferScript(renderScript, 100); OB.Listeners.AddProperty("render", JsHelper.GetFunction(renderScript), true); } string jsContent = String.Format("var {0}=Ext.create('Ext.panel.Panel',{1});", XID, OB.ToString()); AddStartupScript(jsContent); }
protected override void OnFirstPreRender() { base.OnFirstPreRender(); //// 日期选择器也需要菜单组件的支持 //ResourceManager.Instance.AddJavaScriptComponent("menu"); // extjs 的日期格式化字符串 string extjsDateFormatString = ExtDateTimeConvertor.ConvertToExtDateFormat(TimeFormatString); OB.AddProperty("format", extjsDateFormatString); if (AltFormats != null) { StringBuilder formats = new StringBuilder(); foreach (string format in AltFormats) { formats.Append(ExtDateTimeConvertor.ConvertToExtDateFormat(format)); formats.Append("|"); } OB.AddProperty("altFormats", formats.ToString().TrimEnd('|')); } if (Increment != INCREMENT_DEFAULT) { OB.AddProperty("increment", Increment); } ////// 当前选中的日期值,这个在父类中已经设置了 ////OB.RemoveProperty(OptionName.Value); ////if (SelectedDate != null) OB.AddProperty(OptionName.Value, Text); if (MaxTime.HasValue) { OB.AddProperty("maxValue", MaxTime.Value.ToString(TimeFormatString)); } else if (!String.IsNullOrEmpty(MaxTimeText)) { OB.AddProperty("maxValue", MaxTimeText); } if (MinTime.HasValue) { OB.AddProperty("minValue", MinTime.Value.ToString(TimeFormatString)); } else if (!String.IsNullOrEmpty(MinTimeText)) { OB.AddProperty("minValue", MinTimeText); } if (EnableTimeSelect) { OB.Listeners.AddProperty("select", JsHelper.GetFunction(GetPostBackEventReference("Select")), true); } string jsContent = String.Format("var {0}=new Ext.form.TimeField({1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); ResourceManager.Instance.AddJavaScriptComponent("form"); #region Options //JsObjectBuilder fieldDefaults = new JsObjectBuilder(); if (LabelWidth.Value != ConfigPropertyValue.FORM_LABELWIDTH_DEFAULT) { OB.AddProperty("labelWidth", LabelWidth.Value); } if (LabelSeparator != ConfigPropertyValue.FORM_LABELSEPARATOR_DEFAULT) { OB.AddProperty("labelSeparator", LabelSeparator); } if (LabelAlign != LabelAlign.Left) { OB.AddProperty("labelAlign", LabelAlignHelper.GetName(LabelAlign)); } //if (fieldDefaults.Count > 0) //{ // OB.AddProperty("fieldDefaults", fieldDefaults); //} //OB.AddProperty("msgTarget", "qtip"); #region old code //// 如果存在Fields集合 //if (Fields.Count > 0) //{ // JsArrayBuilder ab = new JsArrayBuilder(); // foreach (Field item in Fields) // { // ab.AddProperty(String.Format("{0}", item.ClientID), true); // } // OB.AddProperty(OptionName.Items, ab.ToString(), true); //} #endregion #endregion #region Anchor //JsObjectBuilder defaults = new JsObjectBuilder(); //if (OffsetRight.Value != ConfigPropertyValue.FORM_OFFSETRIGHT_DEFAULT) //{ // defaults.AddProperty("anchor", -OffsetRight.Value); //} //else if (PageManager.Instance.FormOffsetRight.Value != ConfigPropertyValue.FORM_OFFSETRIGHT_DEFAULT) //{ // defaults.AddProperty("anchor", -PageManager.Instance.FormOffsetRight.Value); //} //else //{ // defaults.AddProperty("anchor", "auto"); //} //OB.AddProperty("defaults", defaults); #endregion OB.Listeners.AddProperty("change", JsHelper.GetFunction("X.util.setPageStateChanged();"), true); //this.doLayout(); string jsContent = String.Format("var {0}=new Ext.Panel({1});", XID, OB.ToString()); AddStartupScript(jsContent); #region old code //string doLayoutScript = String.Empty; //doLayoutScript += "\r\n"; //if (Visible) //{ // doLayoutScript += String.Format("Ext.EventManager.onWindowResize(function(){{X.{0}.doLayout();}},box);", ClientJavascriptID); //} //AddAbsoluteStartupScript(doLayoutScript); #endregion }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { // 确保 X_Items 和 SelectedValue 在页面第一次加载时都存在于x_state中 XState.AddModifiedProperty("X_Items"); XState.AddModifiedProperty("SelectedValue"); base.OnFirstPreRender(); #region examples //var nextStepList = [ // ['审核', '1'], // ['不审核', '2'] //]; //var nextStepStore = new Ext.data.SimpleStore({ // fields: ['text', 'value'], // data: nextStepList //}); //{ // xtype:'combo', // store: nextStepStore, // displayField:'text', // valueField:'value', // typeAhead: true, // mode: 'local', // triggerAction: 'all', // value:'1', // emptyText:'请选择下一步', // selectOnFocus:true, // allowBlank:false, // fieldLabel: '下一步', // labelSeparator:' <span style="color:red;vertical-align:text-bottom;">*</span>', // name: 'nextStep', // anchor:'95%' //} #endregion #region Properties if (!EnableEdit) { OB.AddProperty("editable", false); } if (!ForceSelection) { OB.AddProperty("forceSelection", false); } if (Resizable) { OB.AddProperty("resizable", true); } OB.AddProperty("hiddenName", UniqueID); //OB.RemoveProperty("name"); OB.AddProperty("store", "new Ext.data.ArrayStore({fields:['value','text','enabled','prefix']})", true); OB.AddProperty("tpl", "X.util.ddlTPL", true); OB.AddProperty("mode", "local"); OB.AddProperty("triggerAction", "all"); // mode: "local", // triggerAction: "all", #region old code //OB.AddProperty("mode", "local"); //// 点击下拉按钮时显示全部内容 //OB.AddProperty("triggerAction", "all"); //// 必须选中一个值,不能自己输入内容 //OB.AddProperty("forceSelection", true); //// 此下拉列表控件不可以编辑 //OB.AddProperty("editable", false); //OB.AddProperty(OptionName.Title, "Title"); //if (TypeAhead) OB.AddProperty(OptionName.TypeAhead, true); //OB.AddProperty(OptionName.SelectOnFocus, true); //// SelectedValue可以为空 //if (!String.IsNullOrEmpty(SelectedValue)) //{ // OB.AddProperty("value", SelectedValue); //} #endregion #endregion #region old code //string hiddenFieldsScript = String.Empty; //if (AutoPostBack) //{ // hiddenFieldsScript += GetSetHiddenFieldValueScript(LastSelectedValueHiddenID, SelectedValue); //} //string disableSelectRowIndexsString = GetDisableSelectRowIndexsString(); //string disableSelectRowIndexsScript = GetSetHiddenFieldValueScript(DisableRowIndexsHiddenID, disableSelectRowIndexsString); //// TODO: //// 这个要放在加载数据的前面,因为加载数据时需要渲染UI,渲染UI时需要用到这个隐藏字段的值 //if (AjaxPropertyChanged("DisableSelectRowIndexsString", disableSelectRowIndexsString)) //{ // AddAjaxPropertyChangedScript(disableSelectRowIndexsScript); //} // 不管是不是disableSelectFields.Count > 0,都要执行下面的语句,因为可能页面加载时为0,在Ajax后不为零 //if (disableSelectFields.Count > 0) //OB.AddProperty(OptionName.Tpl, String.Format("'<tpl for=\".\"><div class=\"x-combo-list-item {{[X.util.isHiddenFieldContains(\"{0}\",xindex-1) ? \"box-combo-list-item-disable-select\" : \"\"]}}\">{{text}}</div></tpl>'", DisableSelectRowIndexsHiddenID), true); //var tplStr = "'<tpl for=\".\"><div class=\"x-combo-list-item\">{text}</div></tpl>'"; //var tplStr = "new Ext.XTemplate('<tpl for=\".\"><div class=\"x-combo-list-item\">{text}</div></tpl>')"; //var tplStr = "<tpl for=\".\"><div class=\"x-combo-list-item <tpl if=\"!enabled\">x-combo-list-item-disable</tpl>\">{prefix}{text}</div></tpl>"; //OB.AddProperty("tpl", tplStr); //OB.AddProperty("tpl", tplStr.Replace("#DisableRowIndexsHiddenID#", DisableRowIndexsHiddenID), true); //string setSimulateTreeTextFunctionScript = String.Empty; //string setSimulateTreeTextScript = String.Empty; //if (EnableSimulateTree) //{ // string setSimulateTextScript = String.Format("var text=Ext.get('{0}').dom.value;if(text.lastIndexOf('<img')>=0){{Ext.get('{0}').dom.value=X.util.stripHtmlTags(text);}}", ClientID); // setSimulateTreeTextFunctionScript = String.Format("{0}_setSimulateText=function(){{{1}}};", ClientJavascriptID, setSimulateTextScript); // // 加载完毕后,显示选中的值 // //AddAbsoluteStartupScript(String.Format("{0}_setSimulateText();", ClientJavascriptID)); // // 下拉列表加载完毕后,立即去掉前面图片的HTML标签 // string renderScript = JsHelper.GetDeferScript(String.Format("{0}_setSimulateText();", ClientJavascriptID), 20); // "(function(){" + String.Format("{0}_setSimulateText();", ClientJavascriptID) + "}).defer(20);"; // OB.Listeners.AddProperty(OptionName.EVENT_RENDER, "function(component){" + renderScript + "}", true); //} //string simulateTreeAllScript = String.Empty; //if (EnableSimulateTree) //{ // // 在选中一项后,立即去掉前面图片的HTML标签 // simulateTreeAllScript += "\r\n"; // //string simulateTreeScript = String.Format("function(ddl,record,index){{var text=record.data.text;var startDivIndex=text.lastIndexOf('</div>');text=text.substr(startDivIndex+6);Ext.get('{0}').dom.value=text;}}", ClientID); // string simulateTreeScript = String.Format("function(ddl,record,index){{X.{0}_setSimulateText();}}", ClientJavascriptID); // simulateTreeScript = String.Format("{0}.on('{1}',{2},box,{{delay:0}});", ClientJavascriptID, OptionName.Select, simulateTreeScript); // //AddAbsoluteStartupScript( simulateTreeScript); // simulateTreeAllScript += simulateTreeScript; // simulateTreeAllScript += "\r\n"; // string simulateTreeBlurScript = String.Format("function(ddl){{X.{0}_setSimulateText();}}", ClientJavascriptID); // simulateTreeBlurScript = String.Format("{0}.on('{1}',{2},box,{{delay:10}});", ClientJavascriptID, OptionName.Blur, simulateTreeBlurScript); // //AddAbsoluteStartupScript( simulateTreeBlurScript); // simulateTreeAllScript += simulateTreeBlurScript; //} // These are default values, which are assignment in extender.js. //OB.AddProperty("displayField", "text"); //OB.AddProperty("valueField", "value"); //OB.AddProperty("store", "new Ext.data.ArrayStore({fields:['value','text','enabled','prefix']})", true); //string dataScript = String.Empty; //string fields = "['value','text','enabled','prefix']"; //string storeScript = "new Ext.data.ArrayStore({fields:['value','text','enabled','prefix']})";//", fields, GetDataArrayString()); // GetDataArrayString() //OB.AddProperty(OptionName.Store, String.Format("new Ext.data.ArrayStore({{fields:['value','text'],data:{0}}})", dataArrayString), true); //OB.AddProperty("store", String.Format("{0}_data", XID), true); //string dataScript = String.Format("{0}_data=new Ext.data.ArrayStore({{fields:['value','text'],data:{1}}});", ClientJavascriptID, dataArrayString); //sb.AppendFormat("this.{0}_store=new Ext.data.SimpleStore({{fields:['text', 'value'],data:this.{0}_data}});", ClientJavascriptID); #endregion #region AutoPostBack StringBuilder beforeselectSB = new StringBuilder(); // 是否能选中一项(如果此项不能选中,则点击没用) //beforeselectSB.AppendFormat("if(X.util.isHiddenFieldContains('{0}',index)){{return false;}}", DisableRowIndexsHiddenID); beforeselectSB.Append("if(!record.data.enabled){return false;}"); if (AutoPostBack) { beforeselectSB.Append("cmp.x_tmp_lastvalue=cmp.getValue();"); string selectScript = "if(cmp.x_tmp_lastvalue!==cmp.getValue()){" + GetPostBackEventReference() + "}"; OB.Listeners.AddProperty("select", JsHelper.GetFunction(selectScript, "cmp"), true); } OB.Listeners.AddProperty("beforeselect", JsHelper.GetFunction(beforeselectSB.ToString(), "cmp", "record", "index"), true); #region old code //if (AutoPostBack) //{ // // Note: we can't use change event, because it get triggered when the combox lost focus, which is not in time. // // Beforeselect - If current select item is not changed, don't PostBack. // string beforeselectScript = String.Format("function(ddl,record,index){{Ext.get('{0}').dom.value=Ext.get('{1}').dom.value;}}", LastSelectedValueHiddenID, SelectedValueHiddenID); // beforeselectScript = String.Format("{0}.on('{1}',{2},X,{{delay:0}});", XID, "beforeselect", beforeselectScript); // //AddAbsoluteStartupScript( beforeselectScript); // autoPostBackScript += beforeselectScript; // // Select // string selectScript = String.Format("function(ddl,record,index){{if(record.data.value!=Ext.get('{0}').dom.value){{{1}}}}}", LastSelectedValueHiddenID, GetPostBackEventReference()); // selectScript = String.Format("{0}.on('{1}',{2},X,{{delay:0}});", XID, "select", selectScript); // //AddAbsoluteStartupScript( selectScript); // autoPostBackScript += selectScript; // //OB.Listeners.RemoveProperty(OptionName.Change); // //OB.Listeners.AddProperty(OptionName.Change, String.Format("function(ddl,newValue,oldValue){{box_pageStateChange();alert(newValue+':'+oldValue);}}"), true); //} #endregion #endregion #region Listeners - render string renderScript = "cmp.x_loadData();cmp.x_setValue();"; OB.Listeners.AddProperty("render", JsHelper.GetFunction(renderScript, "cmp"), true); #endregion #region AddStartupScript string contentScript = String.Format("var {0}=new Ext.form.ComboBox({1});", XID, OB.ToString()); AddStartupScript(contentScript); #region old code //List<string> totalModifiedProperties = XState.GetTotalModifiedProperties(); //StringBuilder loadDataSB = new StringBuilder(); //if (totalModifiedProperties.Contains("X_Items")) //{ // loadDataSB.AppendFormat("{0}.x_loadData();", XID); //} //else //{ // loadDataSB.AppendFormat("{0}.store.loadData({1});", XID, X_Items.ToString()); //} //if (totalModifiedProperties.Contains("SelectedValue")) //{ // loadDataSB.AppendFormat("{0}.x_setValue();", XID); //} //else //{ // loadDataSB.AppendFormat("{0}.x_setValue({1});", XID, JsHelper.Enquote(SelectedValue)); //} #endregion #endregion }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); //// Color需要菜单组件的支持 //if (EnableColors) //{ // ResourceManager.Instance.AddJavaScriptComponent("menu"); //} if (!EnableAlignments) { OB.AddProperty("enableAlignments", false); } if (!EnableColors) { OB.AddProperty("enableColors", false); } if (!EnableFont) { OB.AddProperty("enableFont", false); } if (!EnableFontSize) { OB.AddProperty("enableFontSize", false); } if (!EnableFormat) { OB.AddProperty("enableFormat", false); } if (!EnableLinks) { OB.AddProperty("enableLinks", false); } if (!EnableLists) { OB.AddProperty("enableLists", false); } if (!EnableSourceEdit) { OB.AddProperty("enableSourceEdit", false); } #region Fonts string[] fonts = null; if (EnableChineseFont) { fonts = new string[] { "宋体", "黑体", "仿宋", "楷体", "隶书", "幼圆", "Arial", "Courier New", "Tahoma", "Times New Roman", "Verdana" }; } else if (FontFamilies != null) { fonts = FontFamilies; } if (fonts != null && fonts.Length > 0) { JsArrayBuilder ab = new JsArrayBuilder(); foreach (string fontName in fonts) { ab.AddProperty(fontName); } OB.AddProperty("fontFamilies", ab); } #endregion if (!String.IsNullOrEmpty(Text)) { OB.AddProperty("value", Text); } // 如果Text属性存在于XState中,则不要重复设置value属性,而是在render事件中使用XState的值 if (XState.ModifiedProperties.Contains("Text")) { OB.RemoveProperty("value"); OB.Listeners.AddProperty("render", JsHelper.GetFunction("cmp.x_setValue();", "cmp"), true); } string jsContent = String.Format("var {0}=new Ext.form.HtmlEditor({1});", XID, OB.ToString()); AddStartupScript(jsContent); }
/// <summary> /// 获取显示对话框的客户端脚本 /// </summary> /// <returns>客户端脚本</returns> public string GetShowReference() { //return GetShowReference(Message, Title, MessageBoxIcon, OkScript, Target, Icon, IconUrl); //if (message == null) //{ // message = String.Empty; //} //if (title == null) //{ // title = String.Empty; //} string message = ""; string title = ""; if (!String.IsNullOrEmpty(Message)) { message = Message; } if (!String.IsNullOrEmpty(Title)) { title = Title; } string addCSSScript = String.Empty; string iconScriptFragment = String.Empty; string resolvedIconUrl = IconHelper.GetResolvedIconUrl(Icon, IconUrl); Page page = HttpContext.Current.CurrentHandler as Page; if (page != null) { resolvedIconUrl = page.ResolveUrl(resolvedIconUrl); } Target target = Target; // Icon 或者 IconUrl 不为空 if (!String.IsNullOrEmpty(resolvedIconUrl)) { string className = String.Format("f-{0}-alert-icon", System.Guid.NewGuid().ToString("N")); var addCSSPrefix = String.Empty; if (target == Target.Parent) { addCSSPrefix = "parent."; } else if (target == Target.Top) { addCSSPrefix = "top."; } addCSSScript = String.Format("{0}F.addCSS('{1}','{2}');", addCSSPrefix, className, StyleUtil.GetNoRepeatBackgroundStyle("." + className, resolvedIconUrl)); iconScriptFragment = String.Format("'{0}'", className); } else { iconScriptFragment = MessageBoxIconHelper.GetName(MessageBoxIcon); } message = message.Replace("\r\n", "\n").Replace("\n", "<br/>"); title = title.Replace("\r\n", "\n").Replace("\n", "<br/>"); string targetScript = "window"; if (target != Target.Self) { targetScript = TargetHelper.GetScriptName(target); } JsObjectBuilder jsob = new JsObjectBuilder(); if (!String.IsNullOrEmpty(CssClass)) { jsob.AddProperty("cls", CssClass); } if (!String.IsNullOrEmpty(title)) { jsob.AddProperty("title", title); } if (!String.IsNullOrEmpty(OkScript)) { jsob.AddProperty("ok", JsHelper.GetFunction(OkScript), true); } if (!String.IsNullOrEmpty(message)) { jsob.AddProperty("message", JsHelper.EnquoteWithScriptTag(message), true); } if (!String.IsNullOrEmpty(iconScriptFragment)) { jsob.AddProperty("messageIcon", iconScriptFragment, true); } return(addCSSScript + String.Format("{0}.F.alert({1});", targetScript, jsob)); }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); //ResourceManager.Instance.AddJavaScriptComponent("button"); //if (Menu.Items.Count > 0) //{ // ResourceManager.Instance.AddJavaScriptComponent("menu"); //} #region Properties if (TabIndex != null) { OB.AddProperty("tabIndex", TabIndex); } if (!String.IsNullOrEmpty(ToolTip)) { OB.AddProperty("tooltip", ToolTip); OB.AddProperty("tooltipType", ToolTipTypeName.GetName(ToolTipType)); } OB.AddProperty("text", Text); if (EnablePress) { OB.AddProperty("enableToggle", EnablePress); OB.AddProperty("pressed", Pressed); //hiddenFieldsScript += GetSetHiddenFieldValueScript(PressedHiddenFieldID, Pressed.ToString().ToLower()); //string toggleScript = String.Format("function(btn,pressed){{X.util.setHiddenFieldValue('{0}',pressed);}}", PressedHiddenFieldID); //OB.Listeners.AddProperty(OptionName.Toggle, toggleScript, true); } if (Type != ButtonType.Button) { OB.AddProperty("type", ButtonTypeName.GetName(Type)); } if (Size != ButtonSize.Small) { OB.AddProperty("scale", ButtonSizeName.GetName(Size)); } #endregion #region Icon IconUrl string resolvedIconUrl = IconHelper.GetResolvedIconUrl(Icon, IconUrl); if (!String.IsNullOrEmpty(resolvedIconUrl)) { // 不需要先删除原来的属性,因为在AddProperty内部已经有这个逻辑了 OB.AddProperty("cls", CssClass + " x-btn-text-icon"); OB.AddProperty("icon", resolvedIconUrl); if (IconAlign != IconAlign.Left) { OB.AddProperty("iconAlign", IconAlignHelper.GetName(IconAlign)); } } #endregion #region Click string clickScript = GetClickScript(); if (!String.IsNullOrEmpty(clickScript)) { OB.AddProperty("handler", JsHelper.GetFunction(clickScript), true); } #endregion #region oldcode //string clickScriptFunction = GetClickScriptFunction(); //if (AjaxPropertyChanged("ClickScriptFunction", clickScriptFunction)) //{ // string ajaxClickFunction = String.Empty; // //ajaxClickFunction += String.Format("{0}.purgeListeners('click');", ClientJavascriptID); // ajaxClickFunction += String.Format("{0}.un('click', X.{0}.initialConfig.listeners.click);", XID); // ajaxClickFunction += String.Format("{0}.on('click',{1});", XID, clickScriptFunction); // AddAjaxPropertyChangedScript(ajaxClickFunction); //} //OB.Listeners.AddProperty(OptionName.Click, String.Format("{0}_click", ClientJavascriptID), true); //OB.AddProperty(OptionName.Handler, "function(){alert('sss');}", true); //string style = String.Empty; //if (CssStyle == "" || !CssStyle.ToLower().Contains("display")) //{ // style += CssStyle + "display:inline;"; //} //OB.RemoveProperty(OptionName.Style); //OB.AddProperty(OptionName.Style, style); //AddExtraStyle("display", "inline"); #endregion #region Menu if (_menu != null && Menu.Items.Count > 0) { OB.AddProperty("menu", String.Format("{0}", Menu.XID), true); } #endregion string createScript = String.Format("var {0}=new Ext.Button({1});", XID, OB.ToString()); AddStartupScript(createScript); }
/// <summary> /// 获取显示对话框的客户端脚本 /// </summary> /// <param name="message">对话框消息</param> /// <param name="title">对话框标题</param> /// <param name="messageBoxIcon"></param> /// <param name="okScript">点击确定按钮执行的客户端脚本</param> /// <param name="target">显示对话框的目标页面</param> /// <param name="icon"></param> /// <param name="iconUrl">自定义对话框图标地址</param> /// <returns>客户端脚本</returns> public static string GetShowReference(string message, string title, MessageBoxIcon messageBoxIcon, string okScript, Target target, Icon icon, string iconUrl) { if (message == null) { message = String.Empty; } if (title == null) { title = String.Empty; } string addCSSScript = String.Empty; string iconScriptFragment = String.Empty; string resolvedIconUrl = IconHelper.GetResolvedIconUrl(icon, iconUrl); Page page = HttpContext.Current.CurrentHandler as Page; if (page != null) { resolvedIconUrl = page.ResolveUrl(resolvedIconUrl); } // Icon 或者 IconUrl 不为空 if (!String.IsNullOrEmpty(resolvedIconUrl)) { string className = String.Format("box-{0}-alert-icon", System.Guid.NewGuid().ToString("N")); var addCSSPrefix = String.Empty; if (target == Target.Parent) { addCSSPrefix = "parent."; } else if (target == Target.Top) { addCSSPrefix = "top."; } addCSSScript = String.Format("{0}X.util.addCSS('{1}','{2}');", addCSSPrefix, className, StyleUtil.GetNoRepeatBackgroundStyle("." + className, resolvedIconUrl)); iconScriptFragment = String.Format("'{0}'", className); } else { iconScriptFragment = MessageBoxIconHelper.GetName(messageBoxIcon); } message = message.Replace("\r\n", "\n").Replace("\n", "<br/>"); title = title.Replace("\r\n", "\n").Replace("\n", "<br/>"); string targetScript = "window"; if (target != Target.Self) { targetScript = TargetHelper.GetScriptName(target); } if (String.IsNullOrEmpty(title) && messageBoxIcon == DefaultMessageBoxIcon && String.IsNullOrEmpty(okScript) && String.IsNullOrEmpty(resolvedIconUrl)) { return(addCSSScript + String.Format("{0}.X.alert({1});", targetScript, JsHelper.GetJsString(message))); } else { return(addCSSScript + String.Format("{0}.X.alert({1},{2},{3},{4});", targetScript, JsHelper.GetJsStringWithScriptTag(message), JsHelper.GetJsString(title), iconScriptFragment, String.IsNullOrEmpty(okScript) ? "''" : JsHelper.GetFunction(okScript))); } }
/// <summary> /// 渲染 HTML 之前调用(页面第一次加载或者普通回发) /// </summary> protected override void OnFirstPreRender() { base.OnFirstPreRender(); #region options OB.AddProperty("animCollapse", true); OB.AddProperty("collapsible", EnableCollapse); OB.AddProperty("collapsed", Collapsed); #endregion #region ShowHeader if (ShowHeader) { OB.AddProperty("title", String.IsNullOrEmpty(Title) ? String.Format("[{0}]", ID) : Title); } else { OB.AddProperty("header", false); } #endregion #region IconUrl if (!String.IsNullOrEmpty(IconUrl)) { // Window控件的特殊处理在Window控件中 // 添加CSS样式 string className = String.Format("f-{0}-panelbase-icon", XID); AddStartupCSS(className, StyleUtil.GetNoRepeatBackgroundStyle("." + className, ResolveUrl(IconUrl))); OB.AddProperty("iconCls", className); //// 下面这种方式不行,这个样式是要添加到Head中的,而不是最外层的DIV //AddExtraStyle("background", StyleUtil.GetNoRepeatBackgroundStyleValue(ResolveUrl(IconUrl))); } #endregion #region old code //if (IconClassName != "") OB.AddProperty(OptionName.IconCls, IconClassName); // Listeners, 折叠展开 //JsObjectBuilder listenersBuilder = new JsObjectBuilder(); //listenersBuilder.AddProperty("collapse", String.Format("function(panel){{Ext.get('{0}').dom.value=true;}}", CollapsedHiddenField.ClientID), true); //listenersBuilder.AddProperty("expand", String.Format("function(panel){{Ext.get('{0}').dom.value=false;}}", CollapsedHiddenField.ClientID), true); //OBuilder.AddProperty("listeners", listenersBuilder.ToString(), true); //if (EnableCollapse) //{ // OB.Listeners.AddProperty("collapse", String.Format("function(panel){{Ext.get('{0}').dom.value=true;}}", CollapsedHiddenFieldID), true); // OB.Listeners.AddProperty("expand", String.Format("function(panel){{Ext.get('{0}').dom.value=false;}}", CollapsedHiddenFieldID), true); //} //string hiddenFieldsScript = String.Empty; //if (EnableCollapse) //{ // hiddenFieldsScript += GetSetHiddenFieldValueScript(CollapsedHiddenFieldID, Collapsed.ToString().ToLower()); //} //hiddenFieldsScript += "\r\n"; //// 在ControlBase的RegisterControlStartupScript函数中做过处理,会把在基类中注册的脚本合并后再整体注册 ////AddStartupScript(this, hiddenFieldsScript); //AddPageFirstLoadScript(hiddenFieldsScript); #endregion #region EnableCollapseEvent if (EnableCollapseEvent) { string collapseScript = JsHelper.GetFunction(GetPostBackEventReference("Collapse")); OB.Listeners.AddProperty("collapse", collapseScript, true); } if (EnableExpandEvent) { string expandScript = JsHelper.GetFunction(GetPostBackEventReference("Expand")); OB.Listeners.AddProperty("expand", expandScript, true); } #endregion }