我想将 jqgrid 的 View 形式定位到屏幕的中心。因为高度是自动设置的(取决于数据量),所以我需要在渲染后计算它的中心位置。因此我想使用afterShowForm。不幸的是,它没有被称为任何。我尝试了旧版本的 jqGrid(也许最新版本包含一个错误),但它没有解决我的问题。有谁知道为什么它不开火?请注意,当我在“beforeShowForm”中更改“afterShowForm”时,它确实会被触发。但是高度还没有计算出来。谢谢! (当然,非常欢迎您提出另一种实现我的目标的方法!)。代码:

        $("#grid").jqGrid("navGrid", "#pager",
        { view: true, addfunc: additem, editfunc: edititem, delfunc: deleteitem },
        {},
        {},
        {},
        {},
        { width: 350,
            afterShowForm: function (formid) {
                alert('yey');
                // Here I want to center the form
            }
        }
        );

编辑:在 wiki 上,我发现 View 表单没有 afterShowForm 事件;它只有 onClose 和 beforeShowForm :( 所以我想不可能以这种方式将位置设置为中心..

最佳答案

问题的原因很简单:afterShowForm is 在View Form中确实不存在。仅支持树事件:onClose、beforeShowFormbeforeInitData。所以你应该使用 beforeShowForm ,但在另一个线程中做你需要的:

beforeShowForm: function($form) {
    setTimeout(function() {
        // do here all what you need (like alert('yey');)
    },50);
}

在大多数情况下,您甚至可以使用 0(而不是 50)作为 setTimeout JavaScript 函数的第二个参数。

关于jquery - jqgrid afterShowForm 未被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6781747/

10-11 05:10