You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用TypeScript修改CSHTML中创建的DevExtreme jQuery DataGrid弹窗?

解决DevExtreme DataGrid弹窗自定义配置问题

方案1:直接在CSHTML配置中修改(最简单直接)

不需要额外TypeScript代码,直接在DataGrid的弹窗配置中添加尺寸或其他自定义属性:

@(Html.DevExtreme().DataGrid<T>()
    .Editing(editing =>
    {
        editing.AllowAdding(true).Mode(GridEditMode.Popup).Form(c =>
        {
            c.LabelLocation(FormLabelLocation.Left);
        });
        editing.Popup(c =>
        {
            c.WrapperAttr(new { Id = "Note" });
            c.ShowTitle(true);
            c.Title("Neue Notiz");
            // 直接添加自定义尺寸
            c.Width(600);
            c.Height(450);
            // 还可以配置位置、动画等其他属性
            c.Position(p => p.My("center").At("center").Of(window));
        });
    })
)

方案2:通过DataGrid事件动态获取弹窗实例

如果需要在前端动态修改(比如根据业务逻辑调整),可以通过弹窗的onShowing事件绑定回调,在回调中获取实例并修改配置:

步骤1:在CSHTML中绑定事件

editing.Popup(c =>
{
    c.WrapperAttr(new { Id = "Note" });
    c.ShowTitle(true);
    c.Title("Neue Notiz");
    // 绑定前端回调函数
    c.OnShowing("handlePopupShowing");
});

步骤2:TypeScript中实现回调

function handlePopupShowing() {
    // 通过容器ID直接获取弹窗实例
    const popupInstance = $("#Note").dxPopup("instance") as DevExpress.ui.dxPopup;
    // 修改弹窗配置
    popupInstance.option({
        width: 700,
        height: 500,
        // 按需添加其他配置,比如禁用关闭按钮
        showCloseButton: false
    });
}

方案3:监听弹窗显示事件获取实例

如果需要在弹窗完全显示后修改,可监听dxshown事件:

// 监听弹窗显示完成事件
$("#Note").on("dxshown", function() {
    const popupInstance = $(this).dxPopup("instance") as DevExpress.ui.dxPopup;
    popupInstance.option("width", 650);
});

关键注意点

  • DevExtreme组件实例获取方式是$(选择器).dx组件名('instance'),不需要查找内部的.dx-popup-normal类,直接用你设置的容器ID(#Note)即可。
  • 确保代码在DOM渲染完成后执行(比如放在$(document).ready()中,或使用DevExtreme的dxready事件)。

内容的提问来源于stack exchange,提问作者user23509416

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:27:19