jqGrid Select 不更新 onchange (C# MVC)

Posted

技术标签:

【中文标题】jqGrid Select 不更新 onchange (C# MVC)【英文标题】:jqGrid Select not updating onchange (C# MVC) 【发布时间】:2018-02-18 23:01:26 【问题描述】:

我通过 dataInit 中的 ajax 调用加载数据,它工作正常,一切正常,但我的所有列(仅下拉列)都没有设置 id 值。

例如我有 itemId 和 itemCode 属性。我加载数据并正确显示,但如果我更改下拉列表中的值,则它不会绑定/更新我的 itemId 值。

基本上我希望下拉列表绑定到我的 id 列,因此在保存它时我会得到一个要保存的 ID。

,
                    key: false,
                    hidden: true,
                    name: 'itemId',
                    index: 'itemId',
                    editable: false
                , 
                    key: false,
                    name: 'itemCode',
                    index: 'itemId',
                    editable: true,
                    edittype: 'select',
                    editoptions: 
                        dataInit: function(element) 
                            $.ajax(
                                url: '@Url.Action("GetItems", "Maintenance")',
                                dataType: 'json',
                                type: 'POST',
                                success: function(response) 
                                    var array = response;
                                    if (array != null) 
                                        var i;
                                        for (i in array) 
                                            if (array.hasOwnProperty(i)) 
                                                if (itemId == array[i].id) 
                                                    $(element).append("<option value=" +
                                                        array[i].id +
                                                        " selected>" +
                                                        array[i].code +
                                                        "</option>");
                                                 else 
                                                    $(element).append("<option value=" +
                                                        array[i].id +
                                                        ">" +
                                                        array[i].code +
                                                        "</option>");
                                                
                                            
                                        
                                    
                                
                            );
                        
                    ,
                    editrules:  required: true

【问题讨论】:

【参考方案1】:

这是我的答案.....看看数据事件。我找到选定的行,然后设置单元格。控制台日志只是为了测试。


                    key: false,
                    hidden: true,
                    name: 'userId',
                    index: 'userId',
                    editable: false
                , 
                    key: false,
                    name: 'userName',
                    index: 'userName',
                    editable: true,
                    edittype: 'select',
                    editoptions: 
                        dataInit: function(element) 
                            $.ajax(
                                url: '@Url.Action("GetUsers", "Maintenance")',
                                dataType: 'json',
                                type: 'POST',
                                success: function(response) 
                                    var array = response;
                                    if (array != null) 
                                        var i;
                                        for (i in array) 
                                            if (array.hasOwnProperty(i)) 
                                                if (userId == array[i].id) 
                                                    $(element).append("<option value=" +
                                                        array[i].id +
                                                        " selected>" +
                                                        array[i].userName +
                                                        "</option>");
                                                 else 
                                                    $(element).append("<option value=" +
                                                        array[i].id +
                                                        ">" +
                                                        array[i].userName +
                                                        "</option>");
                                                
                                            
                                        
                                    
                                
                            );
                        ,
                        dataEvents: [
                              type: 'change',
                                fn: function (e) 
                                    var rowId = $("#jqgrid").jqGrid('getGridParam', 'selrow');
                                    $('#jqgrid').jqGrid('setCell', rowId, 'userId', $(e.target).val());
                                    console.log($("#jqgrid").jqGrid('getCell', rowId, 'userId'));
                                
                            
                        ]
                    

【讨论】:

以上是关于jqGrid Select 不更新 onchange (C# MVC)的主要内容,如果未能解决你的问题,请参考以下文章

使用 onChange 从 <select> 标记更新状态并过滤类别列表以显示该类别的博客文章

如何确保使用javascript更新select也会触发onchange事件侦听器?

使用JQGrid 问题汇总 不定时更新

在 PHP 中刷新 Jqgrid

jqgrid动态填充select

jqGrid过滤器是apllying但ui未更新