首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我们是否可以通过更改free jqgrid 4.15.4中的任何一个选定值来更新多个下拉值

我们是否可以通过更改free jqgrid 4.15.4中的任何一个选定值来更新多个下拉值
EN

Stack Overflow用户
提问于 2018-08-26 01:54:27
回答 1查看 46关注 0票数 0

我在我的一个应用程序中使用免费的jqgrid 4.15.4。我有一个关于一次性更新多个列的下拉值的问题。我使用multiselect: true,option。

我还了解了并发问题,但目前这对我来说还不是问题。

我已经添加了一个演示小提琴https://jsfiddle.net/tygLjmde/

代码语言:javascript
复制
$(function () {
"use strict";
var mydata = [
    { id: "10",  FirstName: "test", LastName: "TNT", Gender: "Male" },
     { id: "11",     FirstName: "test2",    LastName: "ADXC", Gender: "Male" },
     { id: "12",     FirstName: "test3",    LastName: "SDR", Gender: "Female" },
     { id: "13",     FirstName: "test4",    LastName: "234", Gender: "Male" },
     { id: "14",     FirstName: "test5",    LastName: "DAS", Gender: "Male" },
];
$("#list").jqGrid({
data: mydata,
   
    colNames: ['','Id', 'First Name', 'Last Name', 'Gender'],
     colModel: [
  {
            name: "act", template: "actions",
           formatoptions: {
               delbutton: false
         }
        },
        {
            label: "Id",
            name: 'Id',
            hidden: true,
            search: false,
        },
        {
            label: "FirstName",
            name: 'FirstName',
            searchoptions: {
                searchOperators: true,
                sopt: ['eq', 'ne', 'lt', 'le','ni', 'ew', 'en', 'cn', 'nc'],
            }, search: true,
        },
        {
            label: "LastName",
            name: 'LastName',
            searchoptions: {
                searchOperators: true,
                sopt: ['eq', 'ne', 'lt', 'ni', 'ew', 'en', 'cn', 'nc'],
            }, search: true,
        },

        {
            label: "Gender",
            name: 'Gender',
            search: true, 
            edittype: "select",editable: true,
            editoptions: {
            value: "Male:Male;Female:Female;" ,                                                                 
                        },
          stype: "select",
                editrules: {
                    custom: true,
                    custom_func: function (value, colName, iCol)                                                    {
                        alert("The value to validate: " +value);
                        return [true];
                    }
                    },
        },
        ],
        onSelectRow: function (id) {
        if (id && id !== lastsel) {
            jQuery('#list').restoreRow(lastsel);
            jQuery('#list').editRow(id, true);
            lastsel = id;
        }
    },
    loadComplete: function (id) {
        if ($('#list').getGridParam('records') === 0) {
           
            //$('#grid tbody').html("<div style='padding:6px;background:#D8D8D8;'>No records found</div>");
        }
        else {
            var lastsel = 0;
            if (id && id !== lastsel) {
                jQuery('#list').restoreRow(lastsel);
                jQuery('#list').editRow(id, true);
                lastsel = id;
              }
            }
        },
    
    pager: jQuery('#pager'),
    loadonce: true,
    viewrecords: true,
    gridview: true,
    width: 'auto',
    height: '450px',
        iconSet: "fontAwesome",
    multiselect: true,
    cellEdit:true,
    emptyrecords: "No records to display",
    jsonReader:
    {
        root: "rows",
        page: "page",
        total: "total",
        records: "records",
        repeatitems: false,
        Id: "Id"
    },

});
$('#list').jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false, defaultSearch: "cn", multipleSearch: true, searchOperators: true, search: true, loadFilterDefaults: true });
$('#list').jqGrid('navGrid', "#pager", {
    search: false, // show search button on the toolbar
    add: false,
    edit: false,
    del: false,
    refresh: true,
    reloadGridOptions: { fromServer: true }
});    
});

您将在第一列和性别列中看到包含值的下拉列表中的复选框。因此,假设我选择了两行,并且只更改了一行性别下拉值。那么,是否有可能自动更改其他行的性别列值?如果是,那么是否有任何演示/代码更改建议?

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2018-08-26 05:07:24

您在演示中使用了单元格编辑。因此,您可以在更改该值后使用afterSaveCell回调进行一些额外的操作。您可以检查selarrrow参数的值,它包含所选行的ids列表,并使用setCell将行的Gender列的值更改为新值:

代码语言:javascript
复制
afterSaveCell: function (rowid, cmName, value, iRow, iCol) {
    var $self = $(this);

    if (cmName === "Gender") {
        $self.jqGrid("getGridParam", "selarrrow").forEach(function (id) {
            var item = $self.jqGrid("getLocalRow", id);
            if (id !== rowid && item.Gender !== value) {
                $self.jqGrid("setCell", id, iCol, value, false, false, true);
            }
        });
    }
}

请参阅修改后的演示https://jsfiddle.net/OlegKi/20wh9a7g/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52019851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档