jquery - jQuery-UI 对话框内多个 jQuery-UI 选项卡中的 jqGrids 导致出现页面的水平滚动条

标签 jquery asp.net-mvc jquery-ui jqgrid internet-explorer-8

我有一个简单的搜索表单,它启动一个 jQuery UI 对话框,其中包含 5 个 jQuery UI 选项卡,每个选项卡都包含自己的 jqgrid。删除渲染网格的 JavaScript 会导致滚动条消失。更改网格的宽度没有任何效果。

正如您从屏幕截图中看到的,水平滚动条出现,这导致垂直滚动条出现。

我正在使用 jquery 1.7.2、jqueryui 1.8.22、jqgrid 4.4.0 和 Internet Explorer 8.0

Grrr

我像这样通过ajax加载对话框

    function LoadDialog(id) {
        $('#myPopup').dialog({
            height: 800,
            width: 1100,
            autoOpen: false,
            open: function (event, ui) {
                $('#myPopup').html('');
                $.ajax(
                    '<%: Url.Action("loadDetails") %>/' + id,
                    {
                        success: function (data) {
                            $('#myPopup').html(data);
                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                            DisplayMessage(textStatus, errorThrown);
                        }
                    }
                );
            }
        });
        $('#myPopup').dialog('open');
    }

loadDetails 操作方法返回此 View

<div id="contentWrapper">
    <div id="details"></div>
    <div id="tabs">
        <ul>
            <li><%: Html.ActionLink("tab1") %></li>
            <li><%: Html.ActionLink("tab2") %></li>
            <li><%: Html.ActionLink("tab3") %></li>
            <li><%: Html.ActionLink("tab4") %></li>
            <li><%: Html.ActionLink("tab5") %></li>
    </div>
<div>

使用此脚本

<script type="text/javascript">
$('#tabs').tabs({
    cache: true,
    ajaxOptions: {
        cache: true
    }
});
</script>

每个选项卡都会使用适当的 javascript 加载一个表格和一个 jqgrid 的 div 来加载网格,它们的宽度设置为 1000px。

<table id="gridtableX'></table><div id="griddivX"></div>
<script type="text/javascript">
$('#gridtableX').jqGrid({
    url: '/Home/GetGridData/1234',
    datatype: 'json',
    height: 320,
    colNames: ['Col1','Col2','Col3','Col4'],
    colModel: [
        {name:'Col1',width:30,sortable:false},
        {name:'Col2',width:40,sortable:false}, 
        {name:'Col3',width:40,sortable:false}, 
        {name:'Col4',width:40,sortable:false}],
    rowNum:4,
    width:1000,
    scrollOffset:0,
    hidegrid: false,
    viewrecords: true,
    hoverrows: false,
    beforeSelectRow: function(rowid, e){ return false; },
    pager: '#griddivX'}).navGrid('#griddivX',{edit:false,add:false,del:false});
</script>

我目前正在研究一个简单的示例,但这需要一段时间。 如果有人以前遇到过这个问题,请告诉我。 这是什么原因造成的,如何解决?

最佳答案

这个问题很有趣!您能发布可用于检查问题的 URL 吗?

我想,问题的原因可能是 cellWidth jqGrid 4.4.0中引入的功能。只是为了进行测试,您可以修改 cellWidth 的代码并包含该行

if ($.browser.msie) { return false; }

位于cellWidth代码开头的某个位置。在这种情况下,不会创建 left:10000px 为 10000px 的 div。或者,您可以尝试使用将 left:10000px 修改为 left:-10000px 或进行一些其他实验。另外,我建议您阅读the answer这就是引入 cellWidth 函数的由来。

关于jquery - jQuery-UI 对话框内多个 jQuery-UI 选项卡中的 jqGrids 导致出现页面的水平滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11958063/

相关文章:

asp.net-mvc - 是否可以向 MvcSiteMap 菜单节点添加分隔符?

javascript - 如何在 JSFIDDLE 中包含引用

jquery - 在 jQuery UI 完成更新小部件后显示页面

php - 通知栏和添加浏览器过时的脚本

c# - 为什么 System.Diagnostics.Debug.WriteLine 在 Visual Studio 2010 C# 中不起作用?

javascript - 使用 php 触发器切换 Bootstrap 模式

asp.net - IIS 动态压缩失败

javascript - 无法将复选框更改为只读

javascript - Jquery 元素仅在页面刷新后有效

javascript - 在 $.event 中存储任意数据