【问题标题】:jQuery checkbox not displaying correctly when included in SlickGrid包含在 SlickGrid 中时,jQuery 复选框无法正确显示
【发布时间】:2013-09-02 13:46:01
【问题描述】:

我试图在我的页面上显示一个 jquery 复选框,但遇到了一些问题。当我在 SlickGrid 中显示复选框时,它显示为常规复选框,而不是 jQuery 样式。当我在页面的其他区域(不在 SlickGrid 中)显示复选框时,它以 jQuery 样式正确显示,因此我必须引用正确的库。

这是在网格中显示复选框的代码:

var propertiesTitleFormatter = function(row, cell, value, columnDef, dataContext) {
return  "#"+eval(row+1)+"<input type='checkbox' id='sale_check' onclick='UpdateSelected()' class='s_box' name='s_maybe'>"+" "+monthNames[Number(dataContext["saleMonth"].slice(-2))]  + ", " + dataContext["saleMonth"].slice(0,4)+"<br>"+toTitleCase(dataContext["address"])+", "+dataContext["municipality"];
};

var columns = [
{id:"address", name:"Address", field:"address",width:175,resizable:false,formatter:propertiesTitleFormatter, cssClass:"cell-properties"},
];

我在这里做错了什么吗?为什么当它是数据网格的一部分时,此复选框无法正确显示?

【问题讨论】:

    标签: jquery slickgrid


    【解决方案1】:

    您不能在自定义格式化程序中设置 css 类。请参阅我为此提交的拉取请求,mliebman 评论说格式化程序不应该修改列定义。请改用 getItemMetaData。

    https://github.com/mleibman/SlickGrid/pull/598

    编辑:说实话,我从来不知道如何使用 getItemMetaData()。我已经“临时”修改了我的项目的 slickgrid 代码,直到我弄明白,它卡住了。

    【讨论】:

    • 感谢您的建议。你最终设法让它工作了吗?
    • 我最终使用了修改后的 slick.grid.js(就像上面的拉取请求一样) - 一旦你有了它,你可以在你的自定义格式化程序中修改 columnDef.cssClass 属性,这将适用它到你的div。我希望应用于您的复选框会是相似的。
    • 再次感谢。我在哪里可以找到修改后的 slick.grid.js ?
    【解决方案2】:

    问题是 SlickGrid 将在 jQuery UI 标记魔术完成后动态添加复选框。为了手动标记复选框,您必须调用

    $(function() {
        $( "#sale_check" ).button();
    });
    

    试试

    var propertiesTitleFormatter = function(row, cell, value, columnDef, dataContext) {
    return  "#"+eval(row+1)+"<input type='checkbox' id='sale_check' onclick='UpdateSelected()' class='s_box' name='s_maybe'>"+" "+monthNames[Number(dataContext["saleMonth"].slice(-2))]  + ", " + dataContext["saleMonth"].slice(0,4)+"<br>"+toTitleCase(dataContext["address"])+", "+dataContext["municipality"] + ' <script>$(function() {$( "#sale_check" ).button();})();</script>';
    };
    

    【讨论】:

    • 我不明白你建议我尝试什么。 propertiesTitleFormatter 与我发布的原件相同。我也不清楚如何手动标记复选框。我应该什么时候调用那个函数?
    • 我输入的格式化程序末尾有一个 javascript 标签,可以为您进行手动标记。将输入添加到 DOM 后,必须执行 javascript。这意味着您必须在格式化程序运行之后但在格式化程序关闭之前调用它。
    • 谢谢@DGS。我最终注意到您输入的格式化程序末尾的 javascript 标记,但是当我尝试使用它时,出现错误。我似乎无法使语法正确。
    猜你喜欢
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    相关资源
    最近更新 更多