【问题标题】:How to add extra parameter in the base link url for jqgrid如何在 jqgrid 的基本链接 url 中添加额外的参数
【发布时间】:2015-02-12 06:44:59
【问题描述】:

我想在 jqgrid 中添加一个额外的参数。下面的代码不起作用

 formatoptions:{baseLinkUrl:'loadHoldCode/id=?', addParam: '&customerId='+$('#custIdHidden').val()},

但是如果我对参数值进行硬编码,则该值会按我的意愿传递。

 formatoptions:{baseLinkUrl:'loadHoldCode/id=?', addParam: '&customerId="123"},

请帮助我应该改变什么,或者我应该采用其他方法。

更新: 使用自定义格式化程序,我已经尝试过,但我仍然没有看到任何链接

    name: 'holdCode', 
    width: 100, 
    formatter:function (cellvalue, options, rowObject) {
        return '<a src="loadHoldCode/id=?&customerId=' + rowObject.customerId + '">' +
            cellvalue + "</a>";},                           
    searchoptions:{sopt: ['cn', 'eq', 'ne', 'lt', 'le', 'gt', 'ge', 'nu', 'nn', 'in', 'ni']}, 
    sortable: true,
    editable: false

【问题讨论】:

    标签: jqgrid jqgrid-formatter


    【解决方案1】:

    我想实现自定义格式化程序的使用,而不是使用predefinedformatter showlink。

    如果您有如下隐藏列,只需自己构造src

    { name: 'customerId', index: 'customerId', hidden: true },
    { name: 'link', index: 'link', title: false,
        formatter: function (cellvalue, options, rowObject) {
            return '<a href="loadHoldCode/id=?&customerId=' + rowObject.customerId + '" target="_blank">' +
                cellvalue + "</a>";
        }
    }
    

    【讨论】:

    • 不,我现在根本没有得到超链接
    • 您是否遇到任何 Javascript 错误?使用“colModel”代码更新您的帖子。
    • 如果 rowObject.customerId 返回“未定义”,则使用 rowObject[columnIndex] 从行的任何列获取数据。也更新了我的代码以在 标记中使用 href 属性。
    • Id 和 CustomerId 仍然未定义,我正在检查,谢谢先生更新
    • 让我们知道您的整个 colModel,包括这个“custIdHidden”。这将是我们帮助您的非常有用的信息。
    【解决方案2】:

    首先我想弄清楚为什么你的原始代码

    formatoptions: {
        baseLinkUrl: 'loadHoldCode/id=?',
        addParam: '&customerId='+$('#custIdHidden').val()
    },
    

    无法正常工作。这意味着对应的colModel 项目的formatoptions 属性应该初始化,对象具有两个属性baseLinkUrladdParam。这两个属性的值将在初始化期间计算一次。所以你将有$('#custIdHidden').val()在创建网格的那一刻

    最好用这样的结构

    formatoptions: {
        baseLinkUrl: 'loadHoldCode/id=?',
        addParam: function () {
            return '&customerId=' + $('#custIdHidden').val();
        }
    },
    

    但只有当 jqGrid 测试addParam 的值是否为函数时,它才会起作用。格式化程序 "showlink" 不测试函数选项中的任何内容(参见 jqGrid 代码的 the line)。所以**你不能使用formatter: "showlink"来实现你的要求。

    我建议你使用custom formatter(参见here对应的代码示例,其中$.param支持属性作为函数)或使用formatter: "dynamicLink",你可以下载here(参见jqGrid.dynamicLink.js) .它是非常简单且非常灵活的格式化程序。您可以查看格式化程序herehere 的更多详细信息和使用示例。

    【讨论】:

    • 嗨奥列格,如果我必须添加一个作为 jqgrid 行的一部分的参数?那有可能吗?
    • @user2375298:这可能是有原因的,我向您建议了一些实现选项。如果您想使用自定义格式化程序,那么实现应该对应于您使用的网格的输入数据。您在原始代码中使用了$('#custIdHidden').val()。这意味着您想在列的所有单元格中放置相同的值。值rowObject.customerId 表示您在每个输入项中都有customerId 属性。所以这意味着每一行都有不同的值。此外,如果您使用 rowObject.customerId 而不是 rowObject[12] 或其他语法。它应该在数据中
    • @user2375298: 哪种格式的输入数据来自网格?您能否提供测试数据(至少一行)。如果数据的格式对应jsonReader: {repeatitems: true}xmlReader: {repeatitems: true} 的用法,那么rowObject.customerId 的语法将是错误的。您使用哪个datatype(“json”、“xml”、“local”……)?您是否使用loadonce: true(如果使用datatype: "json"datatype: "xml")?您使用哪个版本的 jqGrid?
    • 我正在使用 loadonce =true,我正在使用 Json Data。我正在使用自定义格式化程序函数,当我尝试从 rowdata 访问值时,我得到 undefined 。
    • @user2375298: 您使用哪个版本的 jqGrid?哪种格式具有来自网格的输入数据?能否提供测试数据(至少一行)。 {"rows": [["a","b",123, null, true],...]} 是 JSON 数据,["rows": [{"customerId": "a", "col2": "b", "col3": 123, "col4": null, "col1": true}, ...] 也是 JSON 数据,但数据应该以不同的方式读取。
    猜你喜欢
    • 2020-03-18
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多