【问题标题】:JQuery jqGrid loadCompleteJQuery jqGrid 加载完成
【发布时间】:2015-02-01 09:49:01
【问题描述】:

我有一个使用 jqGrid 构建的表。如果一个单元格为空(gridtable1_Age),我希望另一个单元格(gridtable1_Name)中的文本为粗体。我正在尝试使用 loadComplete,但它似乎没有工作,或者我在正确的地方使用它。

jQuery("#grid1").jqGrid('setGridParam', opts).trigger("reloadGrid", [ {
    page : 1,
    loadComplete : function () {
        $('td[aria-describedby=grid1_Age]:empty', 
            '#gridtable1').parent().find('td[aria-
             describedby=grid1_Name]').css('font-weight', 'bold');
                                }
                            } ]);

编辑:我的网格是用 Struts2 标签构建的

【问题讨论】:

    标签: jquery jqgrid struts


    【解决方案1】:

    我想你有 AgeName 列。您可以做的是在Name 列中定义cellattr 属性,如下所示

    cellattr: function (rowId, val, item) {
        if (item.Age === "") { // or some very close test
            return ' style="font-weight: bold;"';
        }
    }
    

    在这种情况下,网格将被创建正确的 CSS 样式。在页面上进行任何更改会更快(请参阅the answer,其中描述了所有修改都遵循整个页面的额外重排,如果可能的话,应该减少修改)。

    顺便说一句,您发布的代码不起作用,因为“空”单元格可能包含  符号。

    【讨论】:

    • $(...) 部分确实有效,因为我在其他地方成功地对其进行了测试。我将它绑定到一个按钮,该按钮在单击时将文本加粗。我不确定您的解决方案是否是最好的。我的网格是用 Struts2 标签构建的;我不相信我可以将其应用于它。我错了吗?
    • @Freigheist:我自己没有使用 Struts2,但我在 [here](Custom Formatter) 找到了一个如何在 Struts2 的 jqGrid 插件中使用自定义格式化程序的示例。从 JavaScript 的角度来看,要使用自定义格式化程序,需要在列的声明中包含属性 formatter: function (cellvalue, options, rowObject) {...}。在cellattr 的情况下,实际上需要做同样的事情。如果我理解正确的示例,您只需使用 cellattr 的主体定义 global 函数,如 function MyBold(rowId, val, item) {...} 并使用 cellattr: "MyBold"
    【解决方案2】:

    我认为grid1_Agegrid1_name 需要在选择器中用引号括起来,如下所示:

        loadComplete : function () {
        $('td[aria-describedby="grid1_Age"]:empty', '#gridtable1').parent().find('td[aria-
             describedby="grid1_Name"]').css('font-weight', 'bold');
                                }
    

    如果 grid1_Age 和/或 grid1_name 是变量而不是文字,那么正确的方法是:

    loadComplete : function () {
        $('td[aria-describedby="'+grid1_Age+'"]:empty', '#gridtable1').parent()
        .find('td[aria-describedby="'+grid1_Name+'"]').css('font-weight', 'bold');
                                }
                            } ]); 
    

    【讨论】:

    • 我觉得没必要,但我试过了,还是不行。代码的 $(..) 部分按照我的测试工作,绑定到一个按钮。当我单击按钮时它可以工作,但我希望它在网格加载数据后自动运行。
    猜你喜欢
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多