ASP.NET MVC模态框中DevExpress PivotGrid事件失效、加载条不消失问题求助
问题修复方案
1. 删除局部视图重复资源引用
打开局部视图StokMiktarBilgisi.cshtml,删掉末尾的@Html.DevExpress().GetScripts和@Html.DevExpress().GetStyleSheets代码块,所有DevExpress的脚本、样式必须统一在主页面/布局页全局引用,重复加载会导致控件实例冲突、事件绑定失效。
2. 补充PivotGrid回调路由配置
在PivotGrid的初始化代码中添加回调路由,确保分页、排序等操作的请求可以正确命中后端接口:
@Html.DevExpress().PivotGrid(settings => { settings.Name = "PivotGrid1"; // 新增回调路由配置,参数和当前Action入参保持一致 settings.CallbackRouteValues = new { Controller = "AnaBayi", Action = "RetrieveStokMiktari", kaliteId = ViewBag.KaliteId, kaliteAdi = ViewBag.KaliteAdi }; // 其余原有配置保持不变 ... }).Bind(Model).GetHtml()
同时在控制器Action中把接收的参数存入ViewBag,供回调路由使用:
public ActionResult RetrieveStokMiktari(int kaliteId, string kaliteAdi) { ViewBag.KaliteId = kaliteId; ViewBag.KaliteAdi = kaliteAdi; // 其余原有逻辑保持不变 ... }
3. 修正Ajax请求配置
修改自定义Ajax方法,删除错误的contentType配置,GET请求不需要指定application/json格式:
function AjaxCall(url, data, type) { return $.ajax({ url: url, type: type ? type : 'GET', data: data }); }
4. 优化模态框和控件初始化逻辑
调整JS逻辑,避免重复绑定事件、清理旧控件实例,确保AdjustControl方法正确执行:
// 全局仅绑定一次模态框显示事件 $("#modalView").off("shown.bs.modal").on("shown.bs.modal", function () { if (window.PivotGrid1) PivotGrid1.AdjustControl(); }); function RetrieveStokMiktari(url) { var kaliteId = $('#kaliteDropdown').val(); var kaliteAdi = $('#kaliteDropdown').find(':selected').text(); var obj = { kaliteId: kaliteId, kaliteAdi: kaliteAdi }; // 加载新内容前先销毁旧控件实例,避免冲突 if (window.PivotGrid1) { PivotGrid1.Dispose(); window.PivotGrid1 = null; } $("#modalView .modal-body").empty(); AjaxCall(url, obj, "GET") .done(function (data) { $("#modalView .modal-body").html(data); $("#modalView .modal-title").text('Shipment Files'); $("#modalView").modal("show"); }).fail(function (error) { var errMsg = error.statusText || '未知错误'; alert(errMsg); toastr.error("Hata : " + errMsg, "Hata"); }); }
5. 移除按钮多余属性
删掉按钮上的data-toggle="modal" data-target="#modalView"属性,避免和JS手动控制模态框的逻辑冲突:
<button type="button" class="btn btn-sm btn-block btn-primary" onclick="RetrieveStokMiktari('@Url.Action("RetrieveStokMiktari", "AnaBayi")')"> <i class="fas fa-list"></i> Stok Miktarını Getir </button>
内容的提问来源于stack exchange,提问作者MSM
相关产品推荐
相关产品推荐

