【问题标题】:pass an object in jqgrid在 jqgrid 中传递一个对象
【发布时间】:2015-10-01 12:14:46
【问题描述】:

我在我的表单上使用 jqgrid,我正在创建列删除并希望在 javascript 函数中发送对象,代码如下

 {
                    name: "action",
                    align: "center",

                    sortable: false,
                    title: false,
                    fixed: true,
                    search: false,
                    formatter: function (cellValue, options, rowObject) {
                        debugger;
                        var markup = "<a title=\"%ToolTip%\" href=%Href%;>%Text%</a>";
                        var replacements = {
                            "%Text%": "<i class='fa fa-trash' style='color:black'></i>",
                            "%ToolTip%": UserRoles.messages && UserRoles.messages.ClickHereToDelete
                                ? UserRoles.messages.ClickHereToDelete : "",
                            "%Href%": "javascript:UserRoles.deleteUserRoles(" + rowObject + ")"
                        };
                        markup = markup.replace(/%\w+%/g, function (all) {
                            return replacements[all];
                        });
                        return markup;
                    }
                }

我想通过这一行发送函数deleteUserRole中的对象

"%Href%": "javascript:UserRoles.deleteUserRoles(" + rowObject + ")"

但它给了我输出

<a title="" href="javascript:UserRoles.deleteUserRoles([object" object]);=""><i class="fa fa-trash" style="color:black"></i></a>

谁能帮帮我

【问题讨论】:

  • 您使用哪个版本的 jqGrid 和哪个 fork? UserRoles.deleteUserRoles函数应该做什么?你能包括它的代码吗?一般来说,知道该行的id 以及可能删除该项目的一两个附加值就足够了。你在哪里保存信息?在哪一栏?你有另一列中的数据吗?而且formatter的代码看起来很奇怪。您首先插入 %ToolTip% 之类的文本,然后 立即替换 另一个值中的子字符串。直接构造正确的值不容易吗?对了,你试过formatter: "actions"吗?
  • 实际上我在 JQgrid 中有 16 个值,我想根据这 16 个值删除行,所以我想发送对象,以便我可以将整个对象与集合进行比较。
  • 您使用哪个版本的 jqGrid 和哪个 fork? 您是否有 16 个或更多 或 16 个值仅存在于输入数据中,但不在网格上的列中?

标签: javascript jquery jqgrid grid


【解决方案1】:

大多数人不需要创建这样的自定义格式化程序,只需使用 formatter: "action" 和相应的参数。

重要的是要了解格式化程序的目标是提供 HTML 片段,该片段将放置在列的单元格(&lt;td&gt;)中。 rowObject 通常是行的输入数据,其格式取决于许多因素。

您可能需要使用options.rowId 作为UserRoles.deleteUserRoles 函数的参数。在函数内部可以使用getRowData根据rowid获取数据。

我建议您阅读the answer 并在答案中引用所有旧答案。它表明可以通过自定义格式化程序**使用 place "&lt;a href='#'&gt;&lt;i class='fa fa-trash' style='color:black'&gt;&lt;/i&gt;&lt;/a&gt;" 而无需使用任何 javascript:UserRoles.deleteUserRoles(...) 片段。而不是那个可以实现beforeSelectRow回调,它测试用户点击了哪一列。如果用户点击"action" 列的&lt;a&gt;,那么可以执行一些自定义操作。这种方法更有效,因为不需要将 global 函数绑定到列的每个 &lt;a&gt; 元素。可以通过删除&lt;a&gt; 并在列内仅保留&lt;i class='fa fa-trash' style='color:black'&gt;&lt;/i&gt; 来简化列的内容。 beforeSelectRow回调的代码相同。

【讨论】:

  • 在添加的时候,总是给我rowId = 1。
  • 你能回答我问你 3 次的问题吗:你使用哪个版本的 jqGrid 和哪个 fork? 如果所有行的 options.rowId 相同,那么你以错误的方式填充网格。如果您不解决问题,您应该会遇到更严重的问题。您应该在问题的文本中附加更完整的代码,显示您如何创建网格以及如何填充它。您应该包含 2-3 行您使用的输入数据。
  • 我正在使用@license jqGrid 4.4.4 - jQuery Grid。让我用更多代码编辑问题
  • 没关系,亲爱的,添加行号后工作正常
  • @Billi:不客气!我建议您将复古版 jqGrid 4.4.4 更新为当前免费 jqGrid 版本(当前为 4.9.2)。如果你是从 NuGet 安装的。然后你应该卸载jQuery.jqGrid 包并安装free-jqGrid 包。免费的 jqGrid 支持例如 Font Awesome 开箱即用(请参阅the wiki article)。
猜你喜欢
  • 2011-04-14
  • 1970-01-01
  • 2013-04-28
  • 2021-08-07
  • 2021-12-10
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 2011-11-23
相关资源
最近更新 更多