当我使用 gridview:true 时, afterInsertRow : function(ids) 方法不执行

2024-04-21

当我设定gridview to true(gridview:true) 在我们的jqGrid中增加jqGrid的性能,方法如下插入行后,或者其他类似的方法不被执行。 以下是我的jgGrid的代码:

jQuery("#displaylistGrid").jqGrid({
    url: contextRoot + '/StandardProxy/displayListService?userRole='+
         userRole+'&userName='+userName+'&userId='+userId+
         '&duration='+displayDuration+'&wicNo='+wicNo+
         '&displayName='+dlDisplayName+'&displayNameArr='+displayNameArr+
         '&pointValue='+pValue+'&locationId='+locId+'&locationCode='+
         locCode+'&serviceType=forecast',
    datatype: 'json',
    colNames: ["CM Name", "Display ", "Loc. Pt.","Max. Ben." ,"Display Name",
               "Items w/Fcst", "Units", "Sales $", "Profit $", "GP%", "Units",
               "Sales $", "Profit $", "GP%","Hidden","Hidden1","Hidden2",
               "Start Date and End Date", "Hidden4"],
    colModel: [
        { name: "cm_name",      index: "cm_name",     sorttype: "text", width: 120,
          resizable: true },
        { name: "ds_location",  index: "ds_location", sorttype: "text", width: 120,
          resizable: true },
        { name: "ds_symbol",    index: "ds_symbol",   sorttype: "text", width: 50,
          align: "center",      resizable: true },
        { name: "ds_benchMark", index: "ds_benchMark",sorttype: "text", width: 50,
          align: "center",      resizable: true },
        { name: "ds_name",      index: "ds_name",     sorttype: "text", width: 230,
          resizable: true },
        { name: "ds_ItemFrcst", index: "ds_ItemFrcst",sorttype: "int",  width: 60,
          align: "center",      resizable: true,
          unformat: addDemoninatorSortingFormatter },
        { name:"ds_units_promo",index:"ds_units_promo",sorttype:"float",width: 85,
          align: "right",       unformat : spaceFormatter },
        { name:"ds_sales_promo",index:"ds_sales_promo",sorttype:"float",width: 95,
          align: "right",       unformat : spaceFormatter },
        { name: "displaylistGrid_ds_profit_promo",
          index: "displaylistGrid_ds_profit_promo",
          sorttype: "float",    width: 95,             align: "right",
          unformat : spaceFormatter },
        { name:"ds_gp_pct_promo",index:"ds_gp_pct_promo",sorttype:"int",width: 50,
          align: "right",       unformat : spaceFormatter },
        { name: "ds_units_per_store_week",
          index: "ds_units_per_store_week",            sorttype:"float",width: 85,
          align: "right",       unformat : spaceFormatter },
        { name: "ds_sales_per_store_week",
          index: "ds_sales_per_store_week",
          sorttype: "float",    width: 90,             align: "right",
          unformat : spaceFormatter },
        { name: "ds_profit_per_store_week",
          index: "ds_profit_per_store_week",
          sorttype: "float",    width: 90,             align: "right",
          unformat : spaceFormatter },
        { name: "ds_gp_pct_per_store_week",
          index: "ds_gp_pct_per_store_week",
          sorttype: "float",    width: 40,             align: "right",
          unformat : spaceFormatter  },
        { name: "hidden1",      index: "hidden1",      sorttype: "int",
          align: "center",      hidden: true },
        { name: "hidden2",      index: "hidden2",      sorttype: "text",
          align: "center",      hidden: true },
        { name: "hidden3",      index: "hidden3",      sorttype: "int",
          align: "center",      hidden: true },
        { name:"forecast_dates",index:"forecast_dates",sorttype: "text",
          align: "center",      hidden: true },
        { name: "hidden4",      index: "hidden4",      sorttype: "text",
          align: "center",      hidden: false }
    ],
    onSelectRow: function(ids){ 
        //checkDisplayDetail();
        //setDefaultValuesToTheSortingParams();
        var dropDownVal = document.getElementById("displayDetailSelection").value;
        var subTabName = document.getElementById("detailSubTabName").value;
        if(subTabName=="Active")
            dropDownVal = document.getElementById("displayDetailActiveSelection").value;
         reLoadDisplayDetailData(ids,'forecast',dropDownVal,subTabName);
    },
    afterInsertRow : function(ids) {  // shows custom tooltip
        var customToolTip = jQuery("#displaylistGrid").getCell(ids,'ds_name') +
                     " -- " + jQuery("#displaylistGrid").getCell(ids,'hidden4');
        $("#displaylistGrid").setCell(ids,'ds_name', '','',{title:customToolTip}); 
    }, 
    gridComplete : function(){
        if($("#isForecastedSalesGridLoaded").val()=="no"){
            $("#jqgh_displaylistGrid_ds_profit_promo").click();
        }
        else{
            $("#isForecastedSalesGridLoaded").val("no");
        }
    },
    onSortCol : function(){
        $("#isForecastedSalesGridLoaded").val("yes");
    },
    width: 983,
    rowNum: 999,
    height: eval(heightOfDispListGrid()+7),
    toolbar: [true, "top"],
    viewrecords: true,
    treeIcons: {leaf: "ui-icon-document-b"},
    treeGrid: true,
    treeGridModel: 'nested',
    ExpandColumn : 'Description',
    ExpandColClick: true,
    loadonce:false,
    refresh : true,
    shrinkToFit: true,
    gridview:true,         
    sortorder:"asc",
    sortname:"displaylistGrid_ds_profit_promo"
});

以下是代码插入行后 method:

afterInsertRow : function(ids) {  // shows custom tooltip
    var customToolTip = jQuery("#displaylistGrid").getCell(ids,'ds_name') + " -- " +
                        jQuery("#displaylistGrid").getCell(ids,'hidden4') ;
    $("#displaylistGrid").setCell(ids,'ds_name', '','',{title:customToolTip}); 
}, 

前面的代码用于显示自定义工具提示。请建议我做错了什么。

请帮我

谢谢, DISMGMT


使用感gridview:true正在跟随。在“gridview”模式下,将创建最多包含的网格作为字符串。为了准确地为每个网格行构建一个带有 HTML 标记的子字符串数组,我们从字符串数组中创建一个字符串:join('')然后才创建一个表示网格的 DOM 对象。它提高了性能,不仅因为可以更好地处理长字符串(join('')),但是由于减少了对 DOM 对象的处理,这比处理字符串要慢得多。

所以我建议你不要使用afterInsertRow根本不。相反,您可以成功地对以下代码执行相同的操作

var myGrid = jQuery("#displaylistGrid");
var ids = myGrid.jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
    var id=ids[i];
    var customToolTip = myGrid.jqGrid('getCell',ids,'ds_name') + " -- " +
                        myGrid.jqGrid('getCell',ids,'hidden4');
    myGrid.jqGrid('setCell',ids,'ds_name', '','',{title:customToolTip});
}

您可以将其包含在gridComplete or loadComplete.

您将使用的最佳性能自定义格式化程序 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter对于列ds_name您要在其中设置自定义工具提示的位置。实现非常简单,因为您的自定义格式化程序将收到rowObject参数服务器数据的行,其形式与从服务器接收的形式相同(作为数组或对象)。正确的hidden4将可以立即访问(我建议您阅读这个答案 https://stackoverflow.com/questions/4036751/access-row-data-in-jqgrid-custom-formatter/4037912#4037912更多细节)。

UPDATED: 这个答案很老了。 jqGrid提供了许多替代的实现方式,从性能的角度来看这些方式要好得多。页面上的每一个变化都会跟随浏览器reflow https://developers.google.com/speed/articles/reflow。所以使用setCell在循环中无效。更好的是使用cellattr or rowattr并继续使用gridview: true中描述了哪些优点答案 https://stackoverflow.com/a/12519858/315935.

答案 https://stackoverflow.com/a/7408355/315935演示了非常有效的设置方法title在细胞上使用cellattr代替setCell在当前答案中使用。另一个答案 https://stackoverflow.com/a/12180842/315935提供一个更常用的示例cellattr。要设置网格行的属性,可以使用rowattr打回来。看答案 https://stackoverflow.com/a/10531680/315935对于代码示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我使用 gridview:true 时, afterInsertRow : function(ids) 方法不执行 的相关文章

  • JQGrid - 我们如何制作自定义行详细信息

    有人给了我一些示例代码来使我的网格像这样 我在文档中读到 jqgrid 仅支持子网格 喜欢层次结构中的此页面http trirand net demoaspnetmvc aspx http trirand net demoaspnetmvc
  • 如何在 jqGrid 处理之前更改从服务器接收的数据

    我想要实现的场景 我从服务器检索一些数据 我循环数据并添加 更改某些字段的值 数据显示在网格中 用户在本地编辑数据 完成后 用户将整个网格数据提交到服务器 我如何尝试实现它 我做了一个 jqGridloadonce true editurl
  • jqgrid - 添加、编辑、删除不起作用

    我无法添加 编辑 删除 搜索 即使我输入 editrules required true 也不起作用 firebug 中的错误显示 isEmtpy 不起作用 这是我的代码 索引 html
  • 保存/提交时重新加载 jqGrid

    我有以下代码可以在双击时进入内联编辑 ondblClickRow function row id if row id null Products jqGrid restoreRow last selected row Products jq
  • jqGrid 显示用于行内编辑的“编辑”图标

    我正在使用带有内联编辑选项的 jqGrid 如果单元格没有任何值 我想显示一个编辑图标 所以我写了一个格式化程序 function aFormatter cellvalue options row if cellvalue null ret
  • Jqgrid 页脚文本格式问题

    在 Jqgrid 中 我已将某些列设置为链接 对于这些列 我还设置了页脚 MAX 但问题是 配置的链接也被添加到页脚值中 这是意料之外的 任何帮助表示赞赏 提前致谢 我认为问题是how您添加页脚信息 如果你使用页脚数据 http www t
  • 如何获取jqGrid当前的搜索条件?

    我需要获得与 jqGrid 在 GET POST search 参数上传递的完全相同的东西 我怎样才能做到这一点 为了结束这个问题 我做了以下几行 grid getGridParam postData filters 这样我就得到了当我们对
  • jqGrid中的RowID重置,如何防止它?

    由于某种原因 一旦我从分页中执行任何操作 增加行数 移至下一页等 rowID 就会重置 例如 我总共有 75 条记录 我一次显示 15 条记录 总共我有 3 个页面 每个页面可以显示 15 条记录 当我在第一页显示 1 15 的记录时 我得
  • “JQuery”类型的值不存在属性“jqGrid”

    我将 Typescript 与 jqGrid 和 jQuery 一起使用 在下面一行 jQuery this jqGrid editGridRow rowid 我收到消息 JQuery 类型的值不存在属性 jqGrid 关于如何纠正这个问题
  • onSelectRow 中的 jqGrid 行对象

    如何获取 jqGrid 中选定行上的行对象 我需要实际的对象 而不是单元格值 我已阅读文档 但找不到可以为我提供行对象的方法 由于我使用自定义格式化程序 因此 cellValue 将不起作用 如果你实施自定义格式化程序 http www t
  • 如何使用Struts2 Jquery插件实现过滤器搜索

    我正在尝试为我的 Struts2 jquery 网格实现过滤器搜索 如果我搜索任何字符串 通过 jquery 过滤器文本框 那么它会调用我的操作类 但我无法在我的操作类中获取搜索字符串 我尝试在我的 Action 类中打印此行 但搜索字符串
  • jqGrid - 是否可以过滤 colModel 中 jsonmap 的值

    我正在使用 jqGrid 想知道 jqGrid 的 colModel 中的 jsonmap 的值是否可以具有过滤值 ColModel colModel name fname index action jsonmap cells cell c
  • 在jqGrid的Edit Url中传递参数进行表单编辑

    我在用jgGrid表单编辑 我在其中更新编辑的值 当我点击提交时editurl被叫 在这种情况下 在我的场景中 我必须将两个参数传递给控制器 jqGrid代码 var colname var colHeader var gridData v
  • 如何在导航栏 jqgrid 上添加第二个自定义删除按钮?

    我已经在使用默认删除按钮进行自定义操作 在服务器端它在删除之前复制行 我想知道如何创建第二个删除按钮 将删除操作发送到不同的 url 以便在数据库的表上删除 我不想更改当前服务器端代码上的任何内容 只想为从此按钮发送的删除操作创建新代码 我
  • 我应该使用 jquery 中的哪个或哪个插件来使用 xml 文件内容填充 html 表?

    我需要显示来自服务器的 xml 文件的数据 文件路径类似files client xml 到 html 表或 datagrid 中 我应该使用哪个插件 或者更确切地说 我应该使用什么插件 以便它具有可变分页 过滤器和表 CSS 自定义 任何
  • jqGrid 具有自动高度;但有最大高度和滚动条

    有没有办法让jqGrid根据行数自动调整高度 但是当达到一定高度时 它的高度不能再增加并且出现垂直滚动条 Thanks D 我建议你设置 max height 财产在bdiv https stackoverflow com question
  • Jqgrid 模态 Colspan

    我想将 colspan 属性应用于 JQgrid 模式窗口内的 td 它呈现具有以下结构的模态形式
  • jqGrid 的排序/过滤问题

    我正在使用jqGrid 4 5 3 版本我已经升级到免费 jqGrid 版本 4 13 6 升级后我面临以下问题 排序不适用于所有列 我想根据我设置的内容显示列大小autoResizable true and autoresizeOnLoa
  • 在 jqgrid 的 0 行上,我们如何将 NaN 的第 1 页替换为其他内容?

    如果 jqgrid 在某个时间没有行 它会显示Page 1 of NaN什么是Nan这里 我们不能把它改成更合适的东西吗Page 0 of 0或者更好的东西 我的 jqgrid 代码 var grid jQuery list1 grid j
  • 如何将“全选”选项添加到 jqGrid 选择工具栏过滤器?

    我正在使用 jqGrid 和过滤器工具栏构建表格 以便用户过滤表中显示的行 如果我使用文本作为搜索类型 这一切都很好 但对于某些列 我想使用选择列表以使用户更容易根据列中的值进行过滤 我可以将列类型设置为 选择 并使用表中的值填充选项 一切

随机推荐

  • Matlab多核

    我正在运行一种占用大量资源并最大化 CPU 的算法 问题是它只使用一个CPU 我怎样才能使MATLAB多线程计算并使用超过1个CPU 除非您专门使用并行结构 即使用显式并行性 或使用已经为您并行化的内置函数 否则 Matlab 将不会在多核
  • (再次)在独立脚本中使用 Django ORM

    我正在尝试在一些独立的屏幕抓取脚本中使用 Django ORM 我知道这个问题以前曾被问过 但我无法为我的特定问题找到一个好的解决方案 我有一个带有已定义模型的 Django 项目 我想做的是在我的抓取脚本中使用这些模型和 ORM 我的目录
  • 同步客户端-服务器数据库

    我正在寻找一些通用策略 用于将中央服务器上的数据与并不总是在线的客户端应用程序同步 在我的特定情况下 我有一个带有 sqlite 数据库的 Android 手机应用程序和一个带有 MySQL 数据库的 PHP Web 应用程序 用户将能够在
  • 如何避免选择 Internet Explorer 第一个按钮?

    我有一张带有多个文本字段和一个按钮的表单 当我输入其中一个文本字段时 提交按钮会突出显示 如果我在键入时按 Enter 键 则会按下该按钮 因此我会出现意外的行为 因为我的页面已提交 Firefox 不会这样做 是否有一些属性或配置可以避免
  • Xcode C++ 和 Objective-C 重构

    有没有办法refactorXcode 中的混合 C Objective C 代码 我正在使用 Cocos2D 和 Box2D 编写游戏 而 Box2D 是用 C 编写的 因此我编写的每个类都应该具有 mm 扩展名 因此当我尝试例如重命名变量
  • 如何强制增量 Foundry Transforms 作业以非增量方式构建而不影响语义版本?

    如何强制特定数据集以非增量方式构建而不更改转换存储库中的语义版本 有关我们具体用例的详细信息 我们有大约 50 个数据集 由单个增量 Python 通过手动注册和 for 循环定义 此转换的输入可以是 100 到 10000 个小 gzip
  • 在 PHP 中生成 wav 音调

    我想在 php 中生成正弦音 但是构建我的 wav 时我需要给出以字节为单位的值 我不知道该怎么做 这是我的代码 freqOfTone 440 sampleRate 44100 samplesCount 80000 amplitude 0
  • 如何启动已停止的线程

    我创建一个新线程并从主线程启动它 m MyThread new Thread HandleMyThread m MyThread IsBackground true m MyThread Start private void HandleM
  • 虾表设置标题行背景色

    pdf table header row1 row2 width 490 cell style size 7 align center do style row 0 padding 4 2 font Prawn BASEDIR data f
  • 在 Oracle 计算实例 (ubuntu-20.04) 上打开端口 19132

    我创建了一个运行 Ubuntu 20 04 的 Oracle 云基础设施计算实例 我正在尝试打开端口 19132 根据我发现的另一个问题在 Oracle Cloud Infrastructure 计算节点上打开端口 80 https sta
  • Mac 终端 - 打开终端时出现“释放的指针未分配”错误

    在 mac 上打开终端时收到以下消息 上次登录 3 月 11 日星期二 14 33 24 在控制台上 登录 291 0x7fff78af9310 malloc 对象 0x7f974be006f0 的错误 正在释放的指针未分配 在malloc
  • 映射服务使用的网络驱动器

    假设某些 Windows 服务使用需要映射网络驱动器且不需要 UNC 路径的代码 当服务启动时 如何使驱动器映射可供服务会话使用 以服务用户身份登录并创建持久映射不会在实际服务的上下文中建立映射 使用此功能需要您自担风险 我已经在XP和Se
  • Java - 堆与直接内存访问

    我最近遇到sun misc Unsafe类 允许用户以类似于 C 的方式分配 解除分配和一般访问内存 我读过一些解决这个问题的博客 例如 堆内存和直接内存哪个更快 http mentablog soliveirajr com 2012 11
  • 如何在功能测试中测试电子邮件(Symfony2)

    我正在尝试在功能测试中测试电子邮件 我的源代码是一样的食谱的例子 http symfony com doc current cookbook email testing html 控制器 public function sendEmailA
  • PySpark 中按降序排序

    我正在使用 PySpark Python 2 7 9 Spark 1 3 1 并有一个数据框 GroupObject 我需要按降序过滤和排序 试图通过这段代码来实现它 group by dataframe count filter coun
  • 使用 F# 的爱因斯坦之谜解决方案 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在找爱因斯坦之谜 http en
  • 将最后一个值替换为之前的值

    我有一组不完整的三元组 a np arange 10 3 1 print a 1 1 1 2 2 2 3 3 3 4 Or a1 np arange 11 3 1 print a1 1 1 1 2 2 2 3 3 3 4 4 最后的值为4
  • 是否可以让 valgrind 忽略某些库?

    或者最好是全部而不只是我的代码 我的程序使用 Gtk Loudmouth 和其他一些东西 而这两个 以及它们背后的一些 libgcrypto libssl 本身导致了如此多的错误 以至于我无法检测到我自己的错误 是否有可能让 valgrin
  • 适用于多个项目的多个 Rails 版本

    我想在一个项目中使用 Rails 2 2 2 在另一个项目中使用 Rails 2 3 2 两者均已安装 What is rails 2 2 2 version应该做的 我读到它使 2 2 2 成为工作版本 也就是说 从那时起将使用的版本 但
  • 当我使用 gridview:true 时, afterInsertRow : function(ids) 方法不执行

    当我设定gridview to true gridview true 在我们的jqGrid中增加jqGrid的性能 方法如下插入行后 或者其他类似的方法不被执行 以下是我的jgGrid的代码 jQuery displaylistGrid j