首页 > 解决方案 > 有没有办法在使用 iggrid saveChanges 事件发送到控制器时从发布数据中排除特定列?

问题描述

在 igGrid 中调用“saveChanges”事件后,有什么方法可以排除特定列发布到控制器?

例子:

    $("#{{gridName}}").igGrid({
        autoGenerateColumns: false,
        primaryKey: "id",
        columns: JSON.parse('{{igniteTableColumns|raw}}'),
        updateUrl: "/path-to-controller-action",
        features: [               
            {
                name : 'Updating',
                enableAddRow: false,
                enableDeleteRow: false,
                saveChangesSuccessHandler : function (data) {
                    $("#message").text("Changes were saved successfully").fadeIn(3000).fadeOut(5000);                        
                },
                columnSettings: [ 
                    {
                        columnKey: "id",
                        editorOptions: {
                            readOnly: true
                        }
                    }, 
                    {
                        columnKey: "event_date",
                        editorType: 'datepicker',
                        validation: true,
                        editorOptions: {
                            dateFormat: 'MM-dd-yy',
                            required: true,
                            dropDownTriggers: 'focus'
                        }
                    },
                    {
                        columnKey: "event",
                        editorType: 'text',
                        validation: true,
                        editorOptions: {
                            required: true
                        }
                    },                        
                    {
                        columnKey: "history",
                        editorOptions: {
                            readOnly: true
                        }
                    },
                    {
                        columnKey: "delete",
                        editorOptions: {
                            readOnly: true
                        }
                    }
                ]
            }
        ],
        width: "100%",            
        autoCommit: true,
        dataSource: JSON.parse('{{igniteTableData|raw}}'),
        dataSourceType: "json",
        responseDataKey: "igniteTableData"
    });

    $("#saveChanges").click(function () {    
        $("#{{gridName}}").igGrid("saveChanges");    
    });

在上面的示例中,所有指定的列都发布到控制器。但我想从帖子数据中排除“历史”和“删除”列。

因为我不想遍历每个数组并在将数据推送到数据库进行保存之前手动从发布数据中删除这些列。

标签: javascriptinfragisticsignite-uiiggrid

解决方案


通常,该控件假定您希望将其绑定到的整个实体发布回您的服务。如果需要,您可以在调用之前修改挂起的交易对象saveChanges

var trasnactions = $("#{{gridName}}").igGrid("option", "dataSource").pendingTransactions();  

https://www.igniteui.com/help/api/2018.2/ig.datasource#methods:pendingTransactions


推荐阅读