【问题标题】:jqGrid ShowLink Formatter - Custom ID ParameterjqGrid ShowLink Formatter - 自定义 ID 参数
【发布时间】:2011-02-17 13:20:20
【问题描述】:

我只是在这里遗漏了一些简单的东西吗?在不进入自定义格式的情况下,我只想将我的 ID 值用于showlink 格式化程序中的 ID 参数。这是我的子网格的示例:

subGridRowExpanded: function (subgrid_id, row_id) {
    var subgrid_table_id = subgrid_id + '_t';
    $('#' + subgrid_id).html('<table id="' + subgrid_table_id + '" class="scroll" />');
    $('#' + subgrid_table_id).jqGrid({
    datatype: 'local',
    colNames: ['Order Number', 'Request Type', 'Owner', 'Order Status', 'Status Date'],
    colModel: [{
        name: 'orderid',
        index: 'orderid',
        width: 150,
        key: true,
        formatter: 'showlink',
        formatoptions: { baseLinkUrl: 'AOFOrderFacilities.aspx', idName: 'orderid' }
    }, {
        name: 'type',
        index: 'type',
        width: 100
    }, {
        name: 'owner',
        index: 'owner',
        width: 200
    }, {
        name: 'status',
        index: 'status',
        width: 150
    }, {
        name: 'date',
        index: 'date',
        width: 150
    }],
    sortname: 'num',
    sortorder: 'asc',
    height: 'auto'
    });
    // TODO: Make this into an AJAX call.  This is just for demo.
    var mysubdata = [
    { orderid: 'O00001234', type: 'Data', owner: 'Melanie Martin', status: 'Saved', date: '2/4/2011 11:48:18 AM' },
    { orderid: 'O00001235', type: 'Voice', owner: 'Billy Solomon', status: 'Submitted to TC', date: '2/4/2011 12:03:47 PM' }
    ];
    for (var i = 0; i <= mysubdata.length; i++)
    jQuery('#' + subgrid_table_id).jqGrid('addRowData', i + 1, mysubdata[i]);
}

当网格的第一列中的链接被渲染时,它们正确地将orderid 值显示为列的文本(前置的“O”是故意的,应该像这样通过系统),但生成的链接是:

http://localhost/somestuff/AOFOrderFacilities.aspx?orderid=1
http://localhost/somestuff/AOFOrderFacilities.aspx?orderid=2

依此类推,其中 ID 参数值是网格行的序号索引,而不是数据中所需的值。有没有一种简单的方法来使用数据中的值?

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    格式化程序showlink 的格式选项idName 仅表示您需要的url 中的参数名称。 id 的值是 always 的 rowid。在您的示例中,您使用

    var mysubdata = [
        { orderid: 'O00001234', type: 'Data', owner: 'Melanie Martin',
          status: 'Saved', date: '2/4/2011 11:48:18 AM' },
        { orderid: 'O00001235', type: 'Voice', owner: 'Billy Solomon',
          status: 'Submitted to TC', date: '2/4/2011 12:03:47 PM' }
    ];
    for (var i = 0; i <= mysubdata.length; i++)
        jQuery('#' + subgrid_table_id).jqGrid('addRowData', i + 1, mysubdata[i]);
    

    将值 1,2、mysubdata.length 作为行的 rowid。 orderid 列的设置key:true 将被addRowData 方法忽略。您可以在开发人员工具或 Firebug 中验证哪个 id 具有您的网格的 &lt;tr&gt; 元素。

    我建议你修改上面的代码或者只是使用data:mysubdata作为jqGrid的附加参数,而不是使用更慢的旧方法addRowData。因为您定义了key:true,所以一切都应该正常工作。您也可以使用localReader:{id:'orderid'} 作为附加的 jqGrid 参数。

    【讨论】:

    • 啊,我什至没有注意到 data 选项,我只是在 jqGrid 网站上查看一些示例。既然您提到它,它使用来自addRowData 的索引是有道理的。只需将数据数组作为选项传递就更有意义并且可以完美运行。谢谢!
    • @Oleg:请帮我在my example中放置一个自定义格式化程序显示链接
    【解决方案2】:

    不确定你们是否已经解决了这个问题,但我通过如下设置 json 阅读器让它通过我选择的 id 发送:

    jsonReader: { repeatitems: false, id: "[property whose value you want to pass]" },

    丰富

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      相关资源
      最近更新 更多