Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何编写列模板,以便在动态生成列的位置有条件地显示和选中复选框_Jquery_Json_Kendo Ui_Kendo Grid - Fatal编程技术网

Jquery 如何编写列模板,以便在动态生成列的位置有条件地显示和选中复选框

Jquery 如何编写列模板,以便在动态生成列的位置有条件地显示和选中复选框,jquery,json,kendo-ui,kendo-grid,Jquery,Json,Kendo Ui,Kendo Grid,我需要在根据来自数据库的值加载屏幕时动态生成列数。我可以根据输入创建剑道网格列 但是这些列应该显示复选框,并且这些复选框应该有条件地被选中或取消选中。如果我们点击任何复选框,它应该调用javascript方法来执行页面中的其他逻辑 JSON结构: var books = [ {"bookID": 87688, "bookName": "Book AAA", "pages":

我需要在根据来自数据库的值加载屏幕时动态生成列数。我可以根据输入创建剑道网格列

但是这些列应该显示复选框,并且这些复选框应该有条件地被选中或取消选中。如果我们点击任何复选框,它应该调用javascript方法来执行页面中的其他逻辑

JSON结构:

var books = [
        {"bookID": 87688, "bookName": "Book AAA",
            "pages": [
                {"id": 124, "pageNumber": 1,  "contentPeriodAlias": "b"},
                {"id": 103, "pageNumber": 1,  "contentPeriodAlias": "a"},
                {"id": 127, "pageNumber": 2,  "contentPeriodAlias": "a"},
                {"id": 101, "pageNumber": 2,  "contentPeriodAlias": "b"}
                
            ]
        },
        {"bookID": 87689, "bookName": "Book BBB",
            "pages": [
                {"id": 125, "pageNumber": 2,  "contentPeriodAlias": "a" },
                {"id": 126, "pageNumber": 2,  "contentPeriodAlias": "b" },
                {"id": 105, "pageNumber": 1,  "contentPeriodAlias": "b" },
                {"id": 104, "pageNumber": 1,  "contentPeriodAlias": "a" }
            ]
        }
    ];
在这里,页面存储在数据库中,因此这些值来自数据库

var maxPages = 3;
var pageSides = ["a","b"];
在这里,它应该创建6个动态列,如
1a、1b、2a、2b、3a、3b
。它在给定的dojo示例中生成

创建这些列后,应选中两行中
1a、1b、2a、2b
列的复选框,因为此值已保留在数据库中,并且不应选中
3a、3b
列复选框。此外,如果单击任何复选框,它应该通过传递bookID和列名(如1a或3b)来调用javascript方法来更新记录

我尝试了不同的方法来实现这一点,但由于列的动态创建,无法访问剑道网格列模板中的特定复选框列名


有人能告诉我实现我的要求的最佳方法吗?

首先,您所有的复选框都有相同的is。改为使用类,或使用kendo.guid()生成ID,或使用数据项的uid。例如:

template: function(dataItem) { return  `<input type="checkbox" id="${dataItem.uid}_${rowNumber}_${alias}" />` }
模板:函数(数据项){return`}
由于行具有bookID,因此可以通过以下方式为复选框创建唯一且确定的ID:

return  `<input type="checkbox" id="${dataItem.bookID}_${rowNumber}_${alias}" />`
返回``
我不确定您的逻辑到底应该如何工作,因此我无法提供完整的解决方案,但唯一和确定的ID可能是您缺少的部分


你还可以挖掘剑道的观测值,以及它们如何跟踪未保存的更改。网格行的模型具有脏标志:,该标志跟踪整行是否有更改。要跟踪更改的列,您需要按照这些思路实现一些功能:

感谢您的快速回答,但我正在寻找此解决方案