如何在jqgrid中实现组合框

时间:2012-10-24 12:41:41

标签: jquery jqgrid combobox

我在jqGrid中实现了一个组合框。插件使用如下:

demo

我遇到了一个问题,因为当我点击Add时,我会得到comboxbox但是当我输入它并点击提交时,我无法获得我输入的值jqGrid。我附加了我的jqgrid如下:

    var listData = [
                         { id: "1",listName: "List1",level: "level1"},
                         { id: "2",listName: "List3",level: "level3"}
                     ],
    $listgrid = $("#list");
    $listgrid.jqGrid({
        datatype:'local',
        data: listData,
        colNames:['id','Name','Level'],
        colModel:[
                    {name:'id',index:'id',width:70,align:'center',sorttype: 'int',hidden:true},
                    {name:'listName',index:'listName', width:65,editable: true, formatter: 'select',
                        edittype: 'select', editoptions: {
                            value: 'list1:List1;list2:List2;list3:List3',
                            dataInit: function (elem) {
                                setTimeout(function () {
                                    $(elem).combobox();
                                    $( "#toggle" ).click(function() {
                                        $(elem).toggle();
                                    });
                                 }, 50);
                             },
                         }
                     },
                     {name: 'level', index: 'level', width: 105, align: 'center', editable: true,
                         edittype: 'select', editoptions: {
                             value: 'level1:level1;level2:level2;level3:level3'
                         }
                     }
                ],
                rowNum:10,
                rowList:[5,10,20],
                pager: '#list_pager',
                gridview:true,
                ignoreCase:true,
                rownumbers:true,
                sortname: 'id',
                viewrecords: true,
                sortorder: 'desc',
                caption: "Soft Skills",
                height: '100%',
                width:'750',
                editurl: 'test.aspx',
                gridComplete: function() {
                    $("#list").addClass("nodrag nodrop");
                    $("#list").tableDnDUpdate();
                }
             });
             $listgrid.jqGrid('navGrid', '#list_pager', {edit: true, add: true, del: false, search: false, refresh:false},{height:280,reloadAfterSubmit:false},{reloadAfterSubmit:false});

请让我知道如何获取我输入到jqGrid的值。是否可能?如果不可能,是否有任何comboxbox将适用于jqgrid.I已搜索其他comboxbox并尝试实现以下,我无法在jqGrid中工作。

combobox

是否可以在jqGrid中使用它,请任何人都可以帮助我。

先谢谢

1 个答案:

答案 0 :(得分:0)

您提供的demo链接未显示其与jqGrid的关联方式。你提到的第二个链接(http://source.dellsala.com/jquery-combobox/demo/)似乎已被打破。

因此,我试图根据您问题中的源代码向您展示一个示例。 jqGrid组件支持组合框。我根据here的文档修改了您的示例。您可以运行代码段然后尝试一下,它现在显示组合框 - 如果您单击所选的一行,则可以进行编辑。

onSelectRow:事件和一些设置丢失了:

// see: https://free-jqgrid.github.io/getting-started/
// CDN used: https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid
$(function() {

  var listData = [
        {id: "1", listName: "List1", level: "level1"}, 
        {id: "2", listName: "List3", level: "level3"}
    ],
  $listgrid = $("#list");
  
  $listgrid.jqGrid({
    datatype: 'local',
    data: listData,
    colNames: ['id', 'Name', 'Level'],
    colModel: [{
        name: 'id', index: 'id',
        width: 70, align: 'center',
        sorttype: 'int',
        hidden: true, key: true
      },
      {
        name: 'listName', index: 'listName',
        width: 65, align: 'center',
        editable: true,
        formatter: 'select', edittype: 'select', stype: 'select',
        editoptions: {
          value: 'list1:List1;list2:List2;list3:List3',
          defaultValue: 'list1'
        }
      },
      {
        name: 'level', index: 'level',
        width: 105, align: 'center',
        editable: true,
        formatter: 'select', edittype: 'select', stype: 'select',
        editoptions: {
          value: 'level1:level1;level2:level2;level3:level3',
          defaultValue: 'level1'
        }
      }
    ],
    inlineEditing: {
      keys: true, defaultFocusField: "listName", focusField: "listName"
    },
    cmTemplate: {
      autoResizable: true, editable: true
    },
    iconSet: "fontAwesome",
    rowNum: 10, rowList: [5, 10, 20],
    pager: '#list_pager',
    gridview: true, ignoreCase: true, rownumbers: true,
    sortname: 'id', viewrecords: true,
    sortorder: 'desc',
    caption: "Soft Skills",
    height: '100%', width: '750'
    
    ,gridComplete: function() {
      $("#list").addClass("nodrag nodrop");
      //$("#list").tableDnDUpdate();
    }
    
    ,onSelectRow: function(rowid, status, e) {
      var $self = $(this),
          savedRow = $self.jqGrid("getGridParam", "savedRow");
      
      if (savedRow.length > 0 && savedRow[0].id !== rowid) {
        $self.jqGrid("restoreRow", savedRow[0].id);
      }
      
      $self.jqGrid("editRow", rowid, { focusField: e.target });
    }    
  }).jqGrid('navGrid', '#list_pager', 
    { edit: true, add: true, del: false, search: false, refresh: false }, 
    { height: 280, reloadAfterSubmit: false }, 
    { reloadAfterSubmit: false }
  );
});
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Canonical jqGrid example</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jquery-ui.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.15.2/css/ui.jqgrid.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.15.2/jquery.jqgrid.min.js"></script>

<table id="list"></table>
<table id="list_pager"></table>
<div><br/><b>Click inside of any cell to activate combobox (edit mode).</b></div>

可以按照我在Stackoverflow中的不同答案中解释的那样读取值。看看 here 以及更多代码示例。