如何在不可拖动的行之间放置jqgrid行

如何在不可拖动的行之间放置jqgrid行,jqgrid,Jqgrid,我有一个网格, 我可以上下拖动行 我还做了必要的安排,让用户无法拖动“test4”和“test5”行 问题:一切都很完美,但当我试图将行放在“test4”和“test5”行之间时,我无法做到这一点 看起来,当有2个不可拖动的行时,我们不能在它们之间放置一行 有没有办法,我们可以放弃???谢谢 这是代码 <html> <head> <link rel="stylesheet" type="text/css" href="http://ajax.googlea

我有一个网格,

  • 我可以上下拖动行
  • 我还做了必要的安排,让用户无法拖动“test4”和“test5”行
  • 问题:一切都很完美,但当我试图将行放在“test4”和“test5”行之间时,我无法做到这一点

    看起来,当有2个不可拖动的行时,我们不能在它们之间放置一行

    有没有办法,我们可以放弃???谢谢

    这是代码

    <html>
    <head>
        <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/themes/redmond/jquery-ui.css" />
        <link rel="stylesheet" type="text/css" href="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.4.1/css/ui.jqgrid.css" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script>
        <script type="text/javascript" src="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.4.1/js/i18n/grid.locale-en.js"></script>
        <script type="text/javascript" src="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.4.1/js/jquery.jqGrid.src.js"></script>
        <style type="text/css">
           .unsortable {}
        </style>
    
        <script type="text/javascript">
            $(document).ready(function () {
                'use strict';
                var mydata = [
                        {id: "1", name: "test1"},
                        {id: "2", name: "test2"},
                        {id: "3", name: "test3"},
                        {id: "4", name: "test4"},
                        {id: "5", name: "test5"},
                        {id: "6", name: "test6"},
                        {id: "7", name: "test7"}
                        ];
    
                $("#list").jqGrid({
                    datatype: 'local',
                    data: mydata,
                    colNames: [/*'Id', */'Client'],
                    colModel: [
                        {name: 'name', index: 'name', width: 200}
                    ],
                    loadComplete: function (data) {
                        jQuery("#4",jQuery("#list")[0]).addClass('unsortable');
                        jQuery("#5",jQuery("#list")[0]).addClass('unsortable');
                    }
    
                }).jqGrid('sortableRows', { items: '.jqgrow:not(.unsortable)'});
    
            });
        </script>
    </head>
    <body>
        <table id="list"><tr><td></td></tr></table>
    </body>
    </html>
    
    
    .unsortable{}
    $(文档).ready(函数(){
    "严格使用",;
    var mydata=[
    {id:“1”,name:“test1”},
    {id:“2”,name:“test2”},
    {id:“3”,name:“test3”},
    {id:“4”,name:“test4”},
    {id:“5”,name:“test5”},
    {id:“6”,name:“test6”},
    {id:“7”,name:“test7”}
    ];
    $(“#列表”).jqGrid({
    数据类型:“本地”,
    数据:mydata,
    colNames:[/*'Id',*/'Client'],
    colModel:[
    {name:'name',index:'name',宽度:200}
    ],
    loadComplete:函数(数据){
    jQuery(“#4”,jQuery(#list”)[0]).addClass('unsortable');
    jQuery(“#5”,jQuery(#list”)[0]).addClass('unsortable');
    }
    }).jqGrid('sortableRows',{items:'.jqgrow:not(.unsortable)});
    });
    
    您似乎使用了我多年前在中发布的旧代码。jqGrid和jqueryui现在有许多新特性

    我觉得你的问题很有趣。因此,我创建了一个演示了一种可能的解决方案:

    该解决方案的思想是使用jQueryUISortable的
    cancel
    选项,而不是
    items
    (有关更多详细信息,请参阅)

    我在我的演示中使用了禁用了ui状态的类,而不是不可排序的,并且我通过使用rowattr,将类分配给特定的项目,这与修改以前在
    loadComplete
    中创建的行的类更有效

    var disabledIds=[“4”、“5”];
    $(“#列表”).jqGrid({
    ...
    rowattr:函数(项){
    如果($.inArray(item.id,disabledIds)>=0){
    返回{“类”:“ui状态已禁用”};
    }
    },
    ...
    });
    
    sortableRows
    的主调用如下所示

    $(“#list”).jqGrid(“sortableRows”,{cancel:.ui state disabled});
    

    另外,我建议您使用jqGrid as 4.4.1的最新版本。我建议您使用4.9.2(请参阅)。

    首先非常感谢Oleg提供了这么好的帮助。是的,当我需要在JQGrid上工作时,我总是遵循您的代码。:),只有一件事,我们可以删除已禁用的行的灰显颜色吗?谢谢在我的情况下,我的网格中的第一行将不可拖动,我们是否可以做出安排,以便用户可以在网格的第一行上方放置一行?注意-我的网格将没有分页。谢谢@用户584018:不客气!要删除行的灰显颜色,您只需使用任何其他类作为禁用的
    ui状态
    ,例如虚拟类
    不可排序
    。这是任何一门课。看见我使用
    ui-state-disabled
    让用户看到哪些行是不可移动的。您可以轻松地将可排序行移到不可排序行的上方。在我的演示上试试这个。谢谢!我得到了它。你能帮我更多吗。假设在同一个例子中(网格中只有一个页面),我的第一行是不可排序的,我们可以安排用户不能在上面放置任何可排序的元素吗?最初我写了可以(对不起)谢谢@用户584018:是的,当然!我给你发了两个演示。您可以尝试演示,并看到您可以将任何可排序行放在任何位置,包括存在不可排序行之前的第一个位置。这是使用
    cancel
    选项而不是
    items
    的主要原因。