在我的工作中,我们有一些非常旧的数据表,我们正在尝试将它们转换为jqGrid。遗憾的是,并非所有表都可以在jqGrid中从头开始重新创建,因此我们使用tableToGrid来转换jqGrid中的数据表,并至少具有一些功能,如排序和css样式。 但是我们发现我们的一个表存在问题:这个表在某些情况下使用嵌套表显示信息,在这种情况下,tableToGrid崩溃,因为他无法检测到内表的td' s不属于外部表,所以他添加到外部表。结果?一团糟。 所以,我的问题是:考虑到限制(不能使用SubGrid,例如,因为日期已经显示在html上),你们中的任何人都知道告诉tableToGrid忽略"内"表?我认为这里的关键是找到一种方法来为外部和内部表调用tableToGrid,而不需要将一个调用介入另一个调用。
此致
答案 0 :(得分:0)
既然你说过
告诉tableToGrid 忽略“内部”表的方法
您似乎对保留和使用其内容不感兴趣(至少在转换操作期间)。
因此,您可能只是在转换操作之前插入 :
$('table table').remove();
显然,您可能需要编写比table table
更精确的内容,具体取决于整个上下文。
答案 1 :(得分:0)
问题的主要原因是tableToGrid
的使用,这是多年前创建的jqGrid插件,几乎没有更改或维护。例如,插件在循环中使用addRowData
(请参阅the line),这非常慢。您描述的问题的根源是代码的the line
jQuery('td', jQuery(this)).each(function() {
可以改为
jQuery(this).children('td').each(function() {
例如或只是
jQuery(this.cells).each(function() {
(请参阅here了解每cells
的{{1}}个集合。可以使用<tr>
访问第{i}个小区的this.cells[i]
行)
innerHTML
代码的许多部分都面向网格的非常特定的结构,这些复选框允许使用tableToGrid
选项将这些网格转换为网格。这是你需要的吗?
multiselect: true
的代码由两个主要部分组成:第一部分从现有tableToGrid
读取数据并将数据保存在项目数组中。第二部分使用数据创建网格。如果您知道现有表的结构,那么您可以非常简单地创建<table>
的替换。这是我建议你做的。