【问题标题】:How to programmatically select top row of JQGrid?如何以编程方式选择 JQGrid 的顶行?
【发布时间】:2009-11-23 21:11:21
【问题描述】:

如何以编程方式选择 JQGrid 的顶行。我希望在页面上打开第一行时已经选择了它。我的网格按描述性列排序,因此第一行的 id 可以是任何数字。我知道使用方法我只是不知道如何获取顶部(第一)行的 rowid。方法是:

jQuery("#mygrid").setSelection(rowid, true);

【问题讨论】:

    标签: jquery jqgrid selection row


    【解决方案1】:

    上面的答案很接近,但案例已关闭。应该是:

    $("#mygrid").getDataIDs()[0];
    

    这应该可以正常工作。

    【讨论】:

      【解决方案2】:

      或者,不使用 jqGrid API,您应该能够通过导航 DOM 来检索顶行:

      var top_rowid = $('#mygrid tbody:first-child tr:first').attr('id');
      

      【讨论】:

      • 这实际上比仅使用 jqGrid API 更糟糕,因为它会更慢获取。 jqGrid 将行 ID 存储在一个现成的变量中,而这种方式会在不需要打开 DOM 时打开并解析它。
      • 如果有标题行,则此版本无效。两种情况下的正确选择器: var top_rowid = $('#mygrid tbody:first-child tr.jqgrow:first').attr('id');
      • 上面没有工作,它给了我未定义类 jqfirstrow 的行的 id。$("#mygrid").getDataIDs()[0] 下面的答案对我有用。
      【解决方案3】:

      jqGrid 支持setSelection 方法,它只需要正确调用即可:

      var grid = jQuery("#mygrid"),
          ids = grid.jqGrid("getDataIDs");
      if(ids && ids.length > 0)
          grid.jqGrid("setSelection", ids[0]);
      

      【讨论】:

      • 就个人而言,我喜欢这个。谢谢!
      • 我可以选择这个,但它不允许通过新的 4.0 api 进行键盘导航。有什么想法吗?
      【解决方案4】:
       $("#mygrid").getDataIDs()[0]; // SO now requires 30 characters, so....
      

      【讨论】:

      • 尽我所能 - 我无法让这个 api 调用工作。但是,按照下面的建议在 dom 中导航是可行的。无论如何,谢谢 - 不知道为什么通话失败 - 但它对我有用。
      • 我认为 jqGrid 3.6 的语法已更改为:$('#mygrid').jqGrid('getDataIDs');,但是当我使用 Firebug 对在线 v3.6 演示进行尝试时,这给我带来了错误。
      • Sam,旧语法和新 API 一样有效。我给了前者,因为它适用于新旧。
      • 我的网格设置让它工作有以下事件 def: gridComplete: function() { var top_rowid = $('#mygridtbody:first-child tr:first').attr('id '); $("#mygrid").setSelection(top_rowid, true); },
      【解决方案5】:

      表格有标题行时的完整代码:

      var top_rowid = $('#mygrid tr:nth-child(2)').attr('id'); 
      $("#mygrid").setSelection(top_rowid, true);
      

      【讨论】:

        【解决方案6】:

        我用过以下:

        var grid = $('#list');
        grid.jqGrid({
            ...
            gridComplete: function() {
                var ids = grid.jqGrid("getDataIDs");
                if(ids.length > 0) { 
                    grid.jqGrid("setSelection", ids[0]);
                }
            },
            ...
        });
        

        【讨论】:

          【解决方案7】:

          当你有标题行时,试试这个:

          var top_rowid = $('#mygrid tbody:first-child tr:nth-child(2)').attr('id');
          

          【讨论】:

            【解决方案8】:

            如果你有标题行试试这个:

            $('#tb_par tbody:first-child tr:nth-child(2)').trigger("click");

            如果不是:

            $('#mygrid tbody:first-child tr:first').trigger("click");

            会直接触发JqGrid的点击事件。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-04-03
              • 1970-01-01
              • 2014-09-16
              • 1970-01-01
              • 2015-09-09
              • 1970-01-01
              • 1970-01-01
              • 2011-01-03
              相关资源
              最近更新 更多