如何创建 jqGrid 上下文菜单?

2024-06-28

我正在尝试在 jqGrid 上创建一个上下文菜单(针对每一行),但找不到如何执行此操作。我目前正在使用 jQuery 上下文菜单(有更好的方法吗?),但它适用于整个网格,而不是一个特定行,即无法对其执行行级操作。请帮助我,谢谢。

$(document).ready(function(){ 
  $("#list1").jqGrid({
    sortable: true,
    datatype: "local", 
    height: 250, 
    colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'], 
    colModel:[ 
        {name:'id',index:'id', width:60, sorttype:"int"}, 
        {name:'invdate',index:'invdate', width:90, sorttype:"date"}, 
        {name:'name',index:'name', width:100}, 
        {name:'amount',index:'amount', width:80, align:"right",sorttype:"float"}, 
        {name:'tax',index:'tax', width:80, align:"right",sorttype:"float"}, 
        {name:'total',index:'total', width:80,align:"right",sorttype:"float"}, 
        {name:'note',index:'note', width:50, sortable:false} 
        ], 
    multiselect: true,
    rowNum:10, 
    rowList:[10,20,30], 
    pager: '#pager1', 
    sortname: 'id', 
    recordpos: 'left', 
    viewrecords: true, 
    sortorder: "desc",
    caption: "Manipulating Array Data"
  });
  $("#list1").jqGrid('navGrid','#pager1',{add:false,del:false,edit:false,position:'right'});

  $("#list1").contextMenu({
        menu: "myMenu"
    },
        function(action, el, pos) {
        alert(
            "Action: " + action + "\n\n" +
            "Element ID: " + $(el).attr("id") + "\n\n" +
            "X: " + pos.x + "  Y: " + pos.y + " (relative to element)\n\n" +
            "X: " + pos.docX + "  Y: " + pos.docY+ " (relative to document)"
            );
    });

有许多上下文菜单插件。您会在其中找到一个pluginsjqGrid 源的子目录。

要使用它,您可以使用以下 HTML 标记来定义上下文菜单:

<div class="contextMenu" id="myMenu1" style="display:none">
    <ul style="width: 200px">
        <li id="add">
            <span class="ui-icon ui-icon-plus" style="float:left"></span>
            <span style="font-size:11px; font-family:Verdana">Add Row</span>
        </li>
        <li id="edit">
            <span class="ui-icon ui-icon-pencil" style="float:left"></span>
            <span style="font-size:11px; font-family:Verdana">Edit Row</span>
        </li>
        <li id="del">
            <span class="ui-icon ui-icon-trash" style="float:left"></span>
            <span style="font-size:11px; font-family:Verdana">Delete Row</span>
        </li>
    </ul>
</div>

您可以将上下文菜单绑定到内部的网格行loadComplete(将行放置在<table>):

loadComplete: function() {
    $("tr.jqgrow", this).contextMenu('myMenu1', {
        bindings: {
            'edit': function(trigger) {
                // trigger is the DOM element ("tr.jqgrow") which are triggered
                grid.editGridRow(trigger.id, editSettings);
            },
            'add': function(/*trigger*/) {
                grid.editGridRow("new", addSettings);
            },
            'del': function(trigger) {
                if ($('#del').hasClass('ui-state-disabled') === false) {
                    // disabled item can do be choosed
                    grid.delGridRow(trigger.id, delSettings);
                }
            }
        },
        onContextMenu: function(event/*, menu*/) {
            var rowId = $(event.target).closest("tr.jqgrow").attr("id");
            //grid.setSelection(rowId);
            // disable menu for rows with even rowids
            $('#del').attr("disabled",Number(rowId)%2 === 0);
            if (Number(rowId)%2 === 0) {
                $('#del').attr("disabled","disabled").addClass('ui-state-disabled');
            } else {
                $('#del').removeAttr("disabled").removeClass('ui-state-disabled');
            }
            return true;
        }
    });
}

在示例中我禁用了"Del"具有偶数 rowid 的所有行的菜单项。禁用的菜单项会转发项目选择,因此需要控制该项目是否再次禁用bindings.

我上面用过$("tr.jqgrow", this).contextMenu('myMenu1', {...});将相同的菜单绑定到所有网格行。您当然可以将不同的行绑定到不同的菜单:$("tr.jqgrow:even", this).contextMenu('myMenu1', {...}); $("tr.jqgrow:odd", this).contextMenu('myMenu2', {...});

我没有读过代码contextMenu小心,上面的例子可能不是最好的,但是效果很好。可以看对应的demohere http://www.ok-soft-gmbh.com/jqGrid/LocalFormEditingWithContextmenu2.htm。该演示还有许多其他功能,但您应该只在loadComplete事件处理程序。

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

如何创建 jqGrid 上下文菜单? 的相关文章

  • jQuery Calendar:如何在特定日期添加可点击事件?

    我正在使用 jquery 完整日历http arshaw com fullcalendar http arshaw com fullcalendar显示会议 我只是想确认是否可以添加活动 让我们创建一个新会议 使用 php ajax 在特定
  • 克隆表行

    我怎样才能使用javascript 我假设 来克隆一个表格行 就像下图所示的那样 您可以将现场活动连接到所有按钮 例如 如果您给他们一类克隆 则以下内容将起作用 input clone live click function put jqu
  • 如何捕获jquery中的任何点击事件[重复]

    这个问题在这里已经有答案了 我有一个按钮 当单击它时 会显示一个带有图像的 div 例如聊天的表情符号面板 如果我再次单击它 div 会隐藏 但我想要做的是 如果 div 已经显示 然后我单击页面的任何其他内容 我想隐藏它 我试过这个 my
  • jQuery Mobile 标题限制

    jQuery 移动标题有什么限制 有多少个字符 我们如何改变这个限制 使用 jQuery 移动 谢谢 您可以覆盖 ui title 类上的左右边距 为自己提供更多空间 但要小心 因为边距用于确保文本不会干扰标题中的任何左右按钮 ui hea
  • 为什么 jQuery 对损坏标记的解释与浏览器不同?

    我之前已经回答过这个问题 https stackoverflow com a 19101905 1253312 但我并不完全理解why答案是正确的 答案的要点 p p function jqrender html a href http w
  • 发送带有图像的嵌套 JSON

    我一直在尝试研究一种能够通过 Ajax 将嵌套 JSON 请求发送回服务器的方法 根据我的理解 我们主要用于向服务器发送图像或文件的 formdata 在这种情况下不起作用 因为 FormData 似乎不处理嵌套对象 这就是我需要发送的有效
  • chrome中使用jquery的图像高度问题

    img height 回报0在 Chrome 中 但在 IE 和 Firefox 中返回实际高度 在 Chrome 中获取图像高度的实际方法是什么 正如 Josh 提到的 如果图像尚未完全加载 jQuery 将不知道尺寸是多少 尝试这样的操
  • 如何防止 Bootstrap Navbar Toggle 下推内容?

    我将 Bootstrap 与静态顶部导航栏一起使用 如下所示
  • 如何使用 jQuery 解析 JavaScript 对象

    jQuery JavaScript 中用于解析 JSON 对象并返回键 值对的 foreach 等效项是什么 JSON 对象 是什么意思 JSON 是一种用于序列化对象的文本格式 如果要循环访问通过反序列化 JSON 字符串获得的对象中的属
  • 如何在网页上显示进度条直到网页完全加载?

    我想在网页中显示进度条 加载弹出窗口 直到页面完全加载 我的网页很重 因为它包含一个 HTML 编辑器 这是一个基于 jQuery 的 HTML 编辑器 需要很多时间才能完全加载 在加载时 我希望在页面上显示一个进度条 该进度条将在整个页面
  • 如何更改 jquery ui 对话框按钮颜色?

    我需要通过添加另一个 css 的类来更改 jquery ui 对话框按钮颜色的颜色 ui dialog buttonpane find button addClass cancelButton 上面的代码行用于更改 css 类 但它对更改颜
  • Jquery - 如何替换div中的一个单词?

    我有一个从其他位置复制的 div 我需要更改其中的一个单词 这是 HTML div class dealer addy 8726 N Royal Ln br Irving TX 75063 br email protected cdn cg
  • 如何使用jQuery加载跨域html

    我有 2 个不同的 java web 项目在 2 个不同的 tomcat 服务器上运行 假设 projA 和 projB 在这里 我尝试从 projA 加载 projB 中可用的 html 我只是使用 jQuery load 来实现这一点
  • 如何向用户提供 Ajax POST 响应作为下载?

    我正在尝试在包含帐户信息的现有页面中包含 vCard 导出功能 丑陋的方法包括 1 向同一页面提交表单 处理它并重新渲染整个页面 或者 2 针对页面上的 iframe 进行 GET 我真的很想避免这两种情况 但我可能必须使用 2 来实现目标
  • Angularjs 使用 ng-init 为 ng-model 赋值

    您好 我有以下问题 看起来很简单并且应该有效 但事实并非如此 在我的代码中我输入了
  • Bootstrap 多选限制问题

    我使用创建了一个多选下拉列表引导多选 http davidstutz github io bootstrap multiselect 我需要在选项选择中设置一个限制 这里我将其设置为 5 如果达到限制 我只需禁用其他选择选项 它就可以完美工
  • jQuery - 页面上最宽的项目

    如何使用 jQuery 在网页上找到最宽的项目 在 css 中设置的宽度或作为属性 不会很快 但应该可以解决问题 var widest null each function if widest null widest this else i
  • CORS:为什么我的浏览器不发送 OPTIONS 预检请求?

    从我读到的内容来看CORS https en wikipedia org wiki Cross origin resource sharing 我理解它应该按如下方式工作 客户端的脚本尝试获取资源从服务器不同的起源 浏览器拦截这个请求并首先
  • Jquery 脉动改变颜色或图像

    我正在尝试使用 jquery 脉动代码让 div 改变颜色 但我希望它从红色变为黑色 但我听说要做到这一点 你必须下载某个插件 所以我希望它脉动为图片 到目前为止我有这两个代码 img src 36 gif alt width 105 he
  • 如何将 JSLint 用于依赖于 JQuery 的代码段?

    我对 Javascript 比较陌生 我想通过 JSLint 运行我周末玩的那段代码 这样它就可以指出我在哪里是个十足的白痴 不幸的是 我收到了大量关于缺少函数声明的错误 这些函数声明是 JQuery javascript 库及其各种插件的

随机推荐

  • 在Java桌面应用程序中嵌入谷歌地图

    我想在 JPanel 上嵌入谷歌地图 由于我想要放大 缩小等功能 因此使用静态图像是不可行的 为了实现这一点 我可能需要在我的 Java 桌面应用程序中嵌入一个网页 显示谷歌地图 我读到我需要像 WebKit 替代品 这样的东西来完成这个任
  • 有没有办法从文档中隐藏宏模式?

    从 Rust 1 6 0 开始 生成的文档隐藏了每个宏模式的实现 有没有办法从 Cargo 生成的文档中隐藏一些模式 macro rules mc hide this entire pattern impl arg expr gt 42 a
  • Laravel 数据透视表观察者

    我有一个具有更新方法的观察者 观察者ServiceProvider php public function boot Relation observe RelationObserver class 关系观察者 php public func
  • JS:替换对象中与模式匹配的所有字符串值?

    我正在寻找一种有效的方法来替换对象内的值 如果它们与特定模式匹配 var shapes square attr stroke stroke width circle attr fill stroke width 例如 我希望能够将所有 图案
  • 为什么我需要使用 document.write 而不是 DOM 操作方法?

    我正在尝试一种新的广告服务 据我所知 他们没有提供加载广告的功能界面 我们希望根据用户的屏幕尺寸展示不同的广告尺寸 而该服务需要您加载不同的广告尺寸 js每种尺寸的 URL 我最初尝试写
  • 关闭 RMI 注册表

    使用RMI将String对象从WebAppA传递到WebAppB WebAppB是RMIServer 而WebAppA是RMIClient 我在WebAppB中添加了ContextListener 以便在tomcat中初始化上下文时立即启动
  • 迭代格雷码更改位置的有效方法

    有多种迭代方式n 位格雷码 https en wikipedia org wiki Gray code Constructing an n bit Gray code 有些比其他更有效率 但是 我实际上并不需要格雷码 而是想迭代格雷码列表中
  • 如何将缓冲区包装为stream2可读流?

    如何使用stream2接口将node js缓冲区转换为可读流 我已经找到了这个answer https stackoverflow com questions 13230487 converting a buffer into a read
  • git svn - cygwin下的错误

    我有 cygwin 和 git 我正在尝试使用 git 提交到 svn git svn dcommit 但它失败并出现奇怪的错误 git svn dcommit 4 main perl 5536 C cygwin bin perl exe
  • Facebook Canvas:redirect_uri 不属于应用程序

    我正在尝试将 facebook canvas 集成到当前正在运行的 Web 应用程序上localhost 8080运行该网站后 它给了我这个错误 API Error Code 191 API Error Description The sp
  • R data.table 使用列作为参数将函数应用于行

    我有以下内容data table x structure list f1 1 3 f2 3 5 Names c f1 f2 row names c NA 3L class c data table data frame 我想对每一行应用一个
  • 解析 URL 字符串以获取键值的最佳方法?

    我需要解析一个 URL 字符串 如下所示 ad eurl http www youtube com video 4bL4FI1Gz6s hl it IT iv logging level 3 ad flags 0 endscreen mod
  • 如何在Template工具包中检测数组类型? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我需要在模板工具包中检测数组类型附件的一些变量 有最佳实践吗 可以定义一个自定义虚拟方法 该方法返回所提供变量的引用类型 粗略的例子 usr
  • 让 Spring Boot 2.7.x Actuator 知道 X-Forwarded-Prefix 标头?

    我们使用 Spring Boot 2 7 0spring boot starter actuator我们在端口 8081 上公开 management上下文路径 代理设置了几个X Forwarded 标头 包括X Forwarded Pre
  • 我如何检查一个值是否例如名称是否存在于 Cloud Firestore 中任何文档的集合中?

    我想检查一个值是否例如 名称 John 存在于我的 Cloud Firestore 中任何文档的集合中 因为如果存在 我不想创建具有该名称的新文档 在本例中为 John 如何检查该名称是否存在 假设您在 Firestore 中有一个名为 u
  • -performSelector:withObject:afterDelay: 如何工作?

    我目前的工作假设是 performSelector withObject afterDelay 不使用线程 而是安排一个事件在稍后的日期在当前线程上触发 它是否正确 进一步来说 void methodCalledByButtonClick
  • 如何使用 python 将 OpenCV 输出发送到浏览器?

    我有一个带有 open cv 的简单 python 脚本 它接收视频并使用 YOLO 对其进行对象检测 我的问题是 如何将输出作为实时流显示到我的网站 这是Python代码 保存到output avi import cv2 from dar
  • java中如何将String[]解析为int[]?

    我有代码 String s a b c d e int i s split 但这个演员阵容不可用 有人可以帮助我吗 谢谢 您必须循环遍历数组中的每个元素并将它们一一转换 像这样 String s a b c d e String strin
  • 使用 Javascript 在 IE6 中“对所选单元格求和”

    在 Excel 中 可以突出显示一系列单元格并在 状态栏 中查看 总和 这可以在 IE6 中使用 Javascript 和 HTML 表格来完成吗 这里有一些代码可以帮助您开始使用 jQuery 当然 有很多方法可以改进它 EDIT 需要检
  • 如何创建 jqGrid 上下文菜单?

    我正在尝试在 jqGrid 上创建一个上下文菜单 针对每一行 但找不到如何执行此操作 我目前正在使用 jQuery 上下文菜单 有更好的方法吗 但它适用于整个网格 而不是一个特定行 即无法对其执行行级操作 请帮助我 谢谢 document