EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:调整弹出对话框的大小和样式(ASP.NET)

在ASP.NET XAF应用程序中,使用ASPxPopupControl显示弹出对话框。如果设置不受限制,最终用户可以拖动右下角的尺寸夹点来调整弹出窗口的大小。您还可以在代码中自定义初始大小。主窗口的大小等于浏览器窗口的大小。本主题介绍如何根据显示的视图以编程方式调整和自定义弹出窗口的大小。

Popup_Web

提示

DevExpress代码示例数据库(http://www.devexpress.com/example=E4208)中提供了完整的示例项目。

提示

如何:调整Windows的大小和样式主题中提供了WinForms的类似示例。

设置弹出窗口的默认大小和样式

要将统一样式应用于具有新Web UI的ASP.NET应用程序中的所有弹出窗口,请使用以下推荐的XafPopupWindowControl静态属性。

将以下代码添加到Global.asax.cs(Global.asax.vb)文件中的Application_Start方法中。

using DevExpress.ExpressApp.Web.Controls;
using System.Web.UI.WebControls;
//...
protected void Application_Start(object sender, EventArgs e) {
    XafPopupWindowControl.DefaultHeight = Unit.Percentage(50);
    XafPopupWindowControl.DefaultWidth = Unit.Percentage(60);
    XafPopupWindowControl.PopupTemplateType = PopupTemplateType.FindDialog;
    XafPopupWindowControl.ShowPopupMode = ShowPopupMode.Centered;
    //...
}

如果使用经典的Web UI自定义ASP.NET应用程序中的弹出窗口,则可以使用IModelPopupWindowOptionsWeb.WindowHeight和IModelPopupWindowOptionsWeb.WindowWidth属性在模型编辑器中设置默认的高度和宽度。

ClassicWebUIBehavior_ModelEditor

设置单个弹出窗口的大小和样式

XafPopupWindowControl.CustomizePopupWindowSize事件允许您更改默认的弹出窗口的参数。为此,请在ASP.NET模块项目中创建一个Controller并订阅PopupWindowManager.PopupShowing事件以访问XafPopupWindowControl实例。然后,订阅CustomizePopupWindowSize事件,并在事件处理程序中定义所需的大小或样式。

下面的示例演示如何更改所有弹出窗口的默认大小:

using System.Web.UI.WebControls;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Web;
//...
public class CustomizePopupSizeController : WindowController {
    public CustomizePopupSizeController() {
        this.TargetWindowType = WindowType.Main;
    }
    protected override void OnActivated() {
        base.OnActivated();
        ((WebApplication)Application).PopupWindowManager.PopupShowing  = 
PopupWindowManager_PopupShowing;
    }
    private void PopupWindowManager_PopupShowing(object sender, PopupShowingEventArgs e) {
        e.PopupControl.CustomizePopupWindowSize  = XafPopupWindowControl_CustomizePopupWindowSize;
    } 
    private void XafPopupWindowControl_CustomizePopupWindowSize(object sender, 
DevExpress.ExpressApp.Web.Controls.CustomizePopupWindowSizeEventArgs e) {
        e.Width = new Unit(600);
        e.Height = new Unit(400);
        e.Handled = true;
    }
}

使用CustomizePopupWindowSizeEventArgsShowPopupModePopupTemplateType属性更改弹出窗口的样式。

请注意,在New Web UI中,如果将其ShowPopupMode设置为Slide,则无法管理弹出窗口的高度和位置。

若要访问ASPxPopupControl的属性,请以相同的方式处理XafPopupWindowControl.CustomizePopupControl事件。

评估在弹出窗口中显示的视图并相应地设置大小

要访问在弹出窗口中显示的视图,请使用ShowViewSource.SourceView属性。例如,要调整DemoTask类型的弹出窗口的大小,请使用以下代码。

using System.Web.UI.WebControls;
//...
private void XafPopupWindowControl_CustomizePopupWindowSize(object sender, 
DevExpress.ExpressApp.Web.Controls.CustomizePopupWindowSizeEventArgs e) {
    if (e.ShowViewSource.SourceView.ObjectTypeInfo.Type  == typeof(DemoTask)) {
        e.Width = new Unit(600);
        e.Height = new Unit(400);
        e.Handled = true;
    }
}

您还可以使用BaseXafPage.View属性访问父视图(显示在弹出窗口的后面)。

如果需要自定义从特定Frame调用的弹出窗口并在其中显示特定类型的对象,请使用CustomizePopupWindowSizeEventArgs.PopupFrameCustomizePopupWindowSizeEventArgs.SourceFrame属性。下面的例子说明如何定制一个弹出窗口与DemoTask从与窗口调用对象的联系对象。

using DevExpress.ExpressApp.Web.Controls;
using System.Web.UI.WebControls;
//...
private void XafPopupWindowControl_CustomizePopupWindowSize(object sender,
CustomizePopupWindowSizeEventArgs e) {
    if ((e.PopupFrame.View.ObjectTypeInfo.Type == typeof(DemoTask)) && 
    (e.SourceFrame.View.ObjectTypeInfo.Type == typeof(Contact))) {  
        e.Width = new Unit(600);
        e.Height = new Unit(400);
        e.Handled = true;
    }
}

如果弹出视图是参考属性编辑器(ASPxLookupPropertyEditorASPxObjectPropertyEditor)的嵌入式部分,则可能有必要确定哪个查询是要调用的弹出窗口的源。以下代码段演示了如何确定源查找窗口。在此示例中,Data属性提供对编辑器操作引用的访问。

using DevExpress.ExpressApp.Web.Controls;
using DevExpress.ExpressApp.Web.Editors.ASPx;
//...
private void XafPopupWindowControl_CustomizePopupWindowSize(object sender, 
CustomizePopupWindowSizeEventArgs e) {
    if(e.ShowViewSource != null && e.ShowViewSource.SourceAction != null && 
    e.ShowViewSource.SourceAction.Data.ContainsKey(ASPxObjectPropertyEditorBase.EditorActionRelationKey)) {
        ASPxLookupPropertyEditor lookupPropertyEditor = 
        e.ShowViewSource.SourceAction.Data[ASPxObjectPropertyEditorBase.EditorActionRelationKey] 
        as ASPxLookupPropertyEditor;
    }
}

另外,您可以创建PopupWindowShowAction类实例,以使用在处理程序的CustomizePopupWindowParamsEventArgs.View参数中设置的特定View调用弹出窗口。请参阅PopupWindowShowAction类说明以查看代码示例。

注意

某些表单模板(例如,将CustomizePopupWindowSizeEventArgs.ShowPopupMode属性设置为ShowPopupMode.Centered的弹出窗口模板)可能具有特定的细节。

  • 可以基于内容来动态地计算大小。
  • 该窗口可能具有调整大小的限制(IsSizeable属性)。
  • 窗口可能会扩大以占据整个空间(最大化属性)。

如果使用上述方法忽略了自定义大小,则可能需要研究每个所需表单模板的源代码并相应地调整默认表单设置。

转载保留此链接,注明出处