jqgrid导航栏无法正确渲染

时间:2011-05-17 06:56:27

标签: javascript jquery jquery-plugins jqgrid

我的一些jqGrids在导航栏上有一个奇怪的行为 在其中一些我使用默认的搜索和刷新按钮,那些导航区域浮动左侧出现在这些按钮旁边(不应该居中)。

当我向搜索按钮“搜索”添加文本时,会出现最大的问题。这使得按钮边距被错误地计算,使得hober效果边界比实际按钮宽度短。

但就像我说的那样,这只发生在某些情况下,我无法弄清楚正常工作和不工作之间的区别。这不是浏览器问题,因为它在所有浏览器中都是相同的。

Heres是一个截图(注意带焦点的搜索按钮和导航控制位置!): Problem Screenshot

以前有人遇到过这个问题吗? 这是我的配置os网格有这个问题:

$('#ProductBrandListGrid').jqGrid({
        url: '<%= ResolveUrl("~/Controls/ProductsControls/Controllers/ProductBrandController.ashx?method=GridDataList") %>',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['Name', 'Description', 'Actions'],
        colModel: [
    { name: 'Name', index: 'Name', width: 100, align: 'left', resizable: true, sortable: true, searchoptions: { sopt: ['cn']} },
    { name: 'Description', index: 'Description', align: 'left', resizable: true, sortable: true, searchoptions: { sopt: ['cn']} },
    { name: 'act', index: 'act', width: 25, sortable: false, search: false },
    ],
        pager: $('#ProductBrandListGridPager'),
        rowNum: 15,
        rowList: [10, 15, 20, 30, 50, 100],
        sortname: 'Name',
        sortorder: 'asc',
        viewrecords: true,
        imgpath: '',
        caption: '',
        width: 200,
        height: 400,
        gridComplete: function () {
            var ids = jQuery("#ProductBrandListGrid").jqGrid('getDataIDs');
            for (var i = 0; i < ids.length; i++) {
                var cl = ids[i];

                ce2 = "<input type='button' value='details' onclick='ProductBrandItemOpen(\"" + cl + "\")' />";

                $("#ProductBrandListGrid").setRowData(ids[i], { act: ce2 });
            }
        }
    });

    /* Add this line to show search boxes on the header */
    $('#ProductBrandListGrid').jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false });

    /* Add this line to allow advanced search using the toolbar button */
    $("#ProductBrandListGrid").jqGrid('navGrid', "#ProductBrandListGridPager", { search: true, edit: false, add: false, del: false, searchtext:"Search" });

谢谢, 亚历

2 个答案:

答案 0 :(得分:1)

我今天遇到了这个问题并通过“检查元素”注意到了这个问题。由于某种原因,我还有待解决。这甚至发生在宽度大于415时,以及底部寻呼机上没有自定义按钮的网格。到目前为止,它似乎是随机的。出现此问题时,td标记的id =&#39; xxxpagername_left&#39;具有特定的宽度。在没有此问题的网格上,&#39; xxxpagername_left&#39;宽度未设定。所以,快速解决问题:

var pagerName = $($grid).jqGrid('getGridParam', 'pager');
$(pagerName + '_left').css('width', 'auto');

我有一个ResizeGrid方法,在每个网格的默认loadComplete事件中触发;调整网格大小后,代码片段会命中。

不幸的是,我无法将宽度设置为500或大于415的任何成功。

答案 1 :(得分:0)

根据Oleg关于电网初始宽度的说法,我去做了一些测试。

正如我所说,我有其他网格,工具栏上有自定义按钮,但不是这样,但我找不到任何可能导致此问题的差异。

检查我的其他实现我发现这只发生在初始宽度较低的实现上。如果我将初始宽度设置为500,则它会正确居中并在setGridWidth上正确重新定位。 我甚至可以说魔术数是415.初始宽度低于415px会导致这个......任何等于或高于415px的东西都会使jqGrid按预期运行。这让我觉得这是某种硬编码的最小宽度导致这种窃听行为。

感谢Oleg的帮助。 亚历