【问题标题】:How to pass ID when deleting row in jqGrid?jqGrid中删除行时如何传递ID?
【发布时间】:2014-02-05 18:29:18
【问题描述】:

我正在使用 jqGrid 并设置了一个操作处理程序,我希望用户能够删除一行。正在调用 URL 中指定的回调,但我不知道如何将行 ID 传递给 URL 处理程序,因此我知道要删除哪一行。

谁有办法解决这个问题?

<script>
$( document ).ready(function() {
    $("#list2").jqGrid({
        url:'datahandler',
        datatype: "json",
        colNames:['Name','Description', 'Data (Abbreviated)', 'Actions'],
        colModel:[
            {name:'name',index:'name', width:300, resizeable:true},
            {name:'description',index:'description', width:300, resizeable:true},
            {name:'data',index:'data', width:600, resizeable:true},
            {name : 'actions', sortable:false, index: 'actions', formatter:'actions',
                formatoptions: {
                    keys: true,
                    editbutton: false,
                    delOptions: { url: 'deleterow' }
                               }}
        ],
        rowNum:10,
        rowList:[10,20,30],
        pager: '#pager2',
        sortname: 'name',
        viewrecords: true,
        sortorder: "desc",
        caption:"PVSyst Data",
    });
    $("#list2").jqGrid('navGrid','#pager2',{edit:false,add:false,del:false});
});
</script>

【问题讨论】:

    标签: javascript jquery jqgrid grid


    【解决方案1】:

    目前尚不清楚您使用哪种格式来填充网格以及使用哪种 rowid。如果数据填写错误并且将使用值 1、2、3 而不是您希望在服务器端看到的 rowid,则存在典型的错误。无论如何,上面的代码都会使用 HTTP POST 请求到delOptions 中指定的 URL "deleterow"。数据具有delGridRow 文档中描述的格式(请参阅here)。例如,如果删除行的 id 是 "123",那么发布到 URL "deleterow" 的数据将是

    oper=del&id=123
    

    您只需要在服务器端实现对id 参数的读取。如果要将参数名称从 id 重命名为任何其他文本,例如 myId,则可以使用 jqGrid option prmNames: { id: "myId" }。之后发布的数据将如下所示

    oper=del&myId=123
    

    【讨论】:

    • 您好奥列格,感谢您的评论。我没有看到在 URL 中或作为流中的数据发送的 id。我的 HTML 中是否需要任何额外内容才能发送 ID?
    • @fredbasset:无事可做。顺便说一句,我添加了您在网格中定义的 'actions' 列,我可以在 Fiddler 中看到 HTTP POST 请求已完成,并且请求的正文包含 oper=del&amp;id=123。我建议您使用 Fiddler、IE 的开发者工具、Chrome 或任何其他工具来跟踪 HTTP 流量。
    • 更新:我现在通过表单数据获取 oper 和 id。但是 id 是表行的数字索引,我真正想要的是行的第一列的名称。有什么想法可以让网格发送给我吗?
    • @fredbasset:我写信给您,如果您以错误的形式填写网格,通常会存在使用 1、2、3... 值作为 rowid 的问题。您在“如何将行 ID 传递给 URL”的问题中问过。您可以检查网格,您会发现网格的 &lt;tr&gt; 元素具有等于 1、2、3 的 id 属性。这是rowids。如果来自'name' 列的数据真正唯一 并且之间没有重复项,您可以在colModel 中为'name' 列插入key: true 属性。如果您仍然有问题,您应该使用从服务器返回的测试 JSON 数据来回答您的问题。
    • 谢谢! key:true 是我需要的属性。干得好。
    猜你喜欢
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2017-07-12
    • 2021-11-03
    相关资源
    最近更新 更多