jqGrid - 如何禁用列可拖动但可以排序的列

时间:2017-02-06 02:38:47

标签: javascript jquery jquery-ui jqgrid

  1. 我想通过拖动列来禁用重新排序,但jqGrid会对列进行排序。
  2. 或者,我想通过拖动列并使用列选择器来启用重新排序。
  3. 通过拖动列来显示此代码错误。

    $(function () {   
        jQuery("#search_datagrid").jqGrid("GridUnload").jqGrid({
            url: '/Search/SearchDataGrid/',
            datatype: "json",
            contentType: "application/json; charset-utf-8",
            mtype: 'POST',
            postData: {
                 search_word: search_word,
                 baseLang: baseLang,
                 targetLang: targetLang,
                 products: products
            },
            rowNum: 20,
            rowList: [10, 20, 30, 50],
            colNames: columnNames,
            colModel: columnModels,
            shrinkToFit: true,
            height:'auto',
            autowidth: true,
            pager: "#search_pager",
            viewrecords: true,
            caption: "Result",
            subGrid: true,
            sortable: true,
            loadonce: true,
            gridview: true,
    
            subGridOptions: {
                "plusicon": "ui-icon-triangle-1-e",
                "minusicon": "ui-icon-triangle-1-s",
                "openicon": "ui-icon-arrowreturn-1-e"
            },
        })
        .jqGrid('navGrid', '#search_pager', { add: false, edit: false, del: false, search: false, refresh: false })
        .jqGrid('navButtonAdd', '#search_pager', {
            caption: "Select Columns",
            title: "Select Columns",
            buttonicon: "ui-icon-calculator",
            onClickButton: function () {
                jQuery("#search_datagrid").jqGrid('columnChooser');
            }
        })
        .jqGrid('setGroupHeaders', {
            useColSpanStyle: true,
            groupHeaders: [
              { startColumnName: '' + baseLang, numberOfColumns: 2, titleText: 'Language' },
            ]
        })
    });
    $(window).resize(function () {
        $("#search_datagrid").setGridWidth($(this).width() - $(this).width() / 10);
    });
    

1 个答案:

答案 0 :(得分:1)

您使用的网格选项sortable: true负责对列标题的拖放进行的求助(重新排序)。另一方面,sortable: false的{​​{1}}属性可用于通过单击列标题来阻止对列中的数据进行排序。关于colModel的列的重新排序与上述选项和属性无关,但可以使用columnChooser中的hidedlg: true属性来阻止在“列选择器”对话框中显示某些列。

因此,如果我正确理解了您的问题,您应该删除网格的colModel,而不是在sortable: true内指定任何sortable属性(默认值为colModel } property是sortable,它允许对数据进行排序。)