jqGrid onCellSelect和afterSaveCell实现列表单元格可编辑

页面:

 xml代码:

复制代码
    <button name="savebill" caption="保存" />
        <button name="examine" caption="审核" />
        <button name="noexamine" caption="反审核" />
        <button name="topay" caption="转薪资" />
        <grid name="mealSum" sorterItems="" cellEdit="true">
            <field name="personId" label="职员" />
            <field name="number" label="编码" />
            <!--描述-->
            <field name="year" label="年份" />
            <field name="month" label="月份" />
            <field name="BreakfastTimes" label="早餐次数" editable="true" />
            <field name="BreakfastCost" label="早餐费用" />
            <field name="lunchTimes" label="午餐次数" editable="true" />
            <field name="lunchCost" label="午餐费用" />
            <field name="DinnerTimes" label="晚餐次数" editable="true" />
            <field name="DinnerCost" label="晚餐费用" />
            <field name="CostSum" label="费用合计" editable="true" />
            <field name="mealstate" label="状态" />
        </grid>
复制代码

js代码:

复制代码
initalizeDOM : function () {
        var _self=this;
    shr.MonthMealSumResultList.superClass.initalizeDOM.call(this);//shr中MonthMealSumResultList文件
    // 强制隐藏工具栏
        $("#addNew").hide();// 隐藏创建
    $("#delete").hide();// 隐藏删除
    _self.dataInsertMonitor();
  },
onCellSelect: function (rowid, colIndex, cellcontent, e) {
    var _self = this;
        _self._initSelectedRowIdAndSelectRowData();
    //状态为已审核/已转薪资不可编辑
    var row = $("#grid").jqGrid("getRowData", rowid);
    if (row.mealstate == "1"||row.mealstate == "2") {
        $("#grid").jqGrid('setCell', rowid, "BreakfastTimes","", 'not-editable-cell');
        $("#grid").jqGrid('setCell', rowid, "lunchTimes","", 'not-editable-cell');
        $("#grid").jqGrid('setCell', rowid, "DinnerTimes","", 'not-editable-cell');
        $("#grid").jqGrid('setCell', rowid, "CostSum","", 'not-editable-cell');
        }
    // 选择的是选择框
    if (colIndex == 0) {
        //_self._addRowIdToSelectedRowId(rowid);
        var checked = $(_self.gridId).jqGrid('isChecked', rowid);
        f (!checked) {
            var index = $.inArray(rowid, _self.selectedRowId);
            _self.selectedRowId.splice(index, 1);
            //_self.selectedRowData.splice(index, 1);
        }
        return;
        }
    },
//月餐费计算和,实现单元格列表可编辑
dataInsertMonitor: function () {
    var self = this;
        $("#grid").jqGrid("option",{
    afterSaveCell :function(rowid,cellname,value,iRow,iCol,oldValue){
        var meal = 0;
        if(cellname == "BreakfastTimes"){
            meal = value*4;
    $("#grid").jqGrid("setCell",rowid,"BreakfastCost",meal,{color:'red'},"",true,true);
        }
        if(cellname == "lunchTimes"){
            meal = value*15;
            $("#grid").jqGrid("setCell",rowid,"lunchCost",meal,{color:'red'},"",true,true);
        }
        if(cellname == "DinnerTimes"){
            meal = value*6;
     $("#grid").jqGrid("setCell",rowid,"DinnerCost",meal,{color:'red'},"",true,true);
        }
        var breakCost = $("#grid").jqGrid("getCell",rowid,"BreakfastCost");
        var lunchCost = $("#grid").jqGrid("getCell",rowid,"lunchCost");
        var dinnerCost = $("#grid").jqGrid("getCell",rowid,"DinnerCost");
        var sum = breakCost*1+lunchCost*1+dinnerCost*1;
        $("#grid").jqGrid("setCell",rowid,"CostSum",sum,{color:'red'},"",true,true);
    }
});
     //保存按钮,调后台保存
    savebillAction:function(){
        var _self = this;
        var bills = [];
        var $grid = $(this.gridId);
        var selectedIds = $grid.jqGrid("getSelectedRows");
        if (selectedIds.length > 0) {
            if (typeof fieldName == 'undefined' || !fieldName) {
                fieldName = this.getBillIdFieldName();
            }
            var id;
            for (var i = 0, length = selectedIds.length; i < length; i++) {
                id = $grid.jqGrid("getCell", selectedIds[i], fieldName);
                if (id && id.length > 0) {
                    var a = $('#grid').jqGrid('getRowRealData',id);
                    bills.push(a);
                    if (a.mealstate == "1") {
                        shr.showWarning({
                            message: a["personId.name"]+" 的员工状态为已审核"
                        });
                        return;
                    }
                    if (a.mealstate == "2") {
                        shr.showWarning({
                            message: a["personId.name"]+" 的员工状态为已转薪资"
                        });
                        return;
                    }
                }
            }
            var databill = shr.toJSON(bills);
            shr.showConfirm('您确认要保存吗?', function(){
                top.Messenger().hideAll();
                
                _self.remoteCall({
                method:"savebills",
                param:{data:databill},
                success:function(data){
                    if(data.result == "error"){
                        shr.showError({message:data.summary})
                    }else{
                        shr.showSuccess({
                            message: "保存成功!"
                        });
                        window.location.reload();
                    }
                    
                }
            });
            });
        }
        if (selectedIds.length <= 0) {
        shr.showWarning({
            message: "请先选中表格中的数据!"
        });
        };
    },
} 
复制代码

 

posted @   Ning-  阅读(714)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示