EasyUi DataGrid中数据编辑方式及编辑后数据获取,校验处理





EasyUi中的DataGrid提供前台编辑的相关函数。

实现客户选中DataGrid中一列后,对选中列中的一个字段进行编辑,并对数据进行实时校验后,传递至后台保存的需求,

主要涉及到DataGrid中设置编辑单元格,获取编辑单元格,编辑单元格的onchange事件处理,通过当前光标所在编辑单元格获取所在行。

1. 设置编辑单元格

  在列定义中增加editor属性,参数为type,options

  eg:

{title:'上级分配额度',field:'assigned_amount_temp',width:150,sortable:true,align:'right',editor:{type:'numberbox',options:{precision:2,groupSeparator:','}}}

  通过beginEdit方法设置行开始编辑,参数为行号(index),设置后,列会变成可输入状态

  eg:

$('#datagrid').datagrid('beginEdit', index);

2. 获取编辑单元格,

  通过getEditor方法获取单元格,参数为options,使用行号和列名可以唯一定位cell

  eg:

var ed = $('#datagrid').datagrid('getEditor', {index:index,field:'assigned_amount_temp'});

 

3. 为编辑单元格增加onChange事件

  获取到编辑单元格后,可以为其增加onChange事件

  eg:    

$(ed.target).numberbox({ onChange: function () {
                      // 获取编辑对象的value
$(ed.target).numberbox('getValue'); 4                     // 设置编辑对的value 5                    
$(ed.target).numberbox('setValue',removeAmountFormat(rowData['assigned_amount_temp'])); 6             });

4. 通过当前光标所在编辑单元格获取所在行

  在编辑单元格的onChange方法中,获取当前行

  eg:



$(ed.target).numberbox({ onChange: function (newValue,oldValue) {
  // 获取光标所在行的行号 通过当前对象往上获取第一个datagrid-row的tr,然后那它的datagrid-row-index属性值
  var rowIndex = $(this).closest("tr.datagrid-row").attr("datagrid-row-index");
   
  var rows = $("#datagrid").datagrid('getRows');
   
 });
此次功能核心的jsp代码:





<%@ page language="java" contentType="text/html; charset=UTF-8"%>

<%-- 引入页面头 --%>
<%@ include file="/pageHead.jsp" %>

<form name="queryform" id="queryform" action="" method="post">
    <input type="hidden" id="draftGroupPoolId" name="draftGroupPoolId" value="${draftGroupPool.id}" />
    <div class="pageMain">
        <div class="pageTitle">票据池额度分配</div>
        <div class="pageBody">
            <table class="tableFrom">    
                <tr>
                    <td class="td01"></td>
                    <td class="td02">集团客户名称:</td>
                    <td class="td04">${draftGroupPool.client.name}</td>
                    <td class="td01"></td>
                    <td class="td02">集团票据池名称:</td>
                    <td class="td04">${draftGroupPool.group_pool_name}</td>
                </tr>
                
                <tr>
                    <td class="td01"></td>
                    <td class="td02" ><b>集团池余额合计:</b></td>
                    <td class="td04">
                        <b>
                        <script type="text/javascript">document.write(new Number('${draft_amount}').add(new Number('${bond_amount}')).add(new Number('${pool_adjust_amount}')).formatMoney(2,"",",","."));</script>
                        </b>
                    </td>
                    
                    <td class="td01"></td>
                    <td class="td02" ><b>集团池已使用余额合计:</b></td>
                    <td class="td04">
                        <b>
                        <script type="text/javascript">document.write(new Number('${ebill_used_amount}').add(new Number('${used_amount}')).formatMoney(2,"",",","."));</script>
                        </b>
                    </td>
                </tr>
                
                <tr>
                    <td class="td01"></td>
                    <td class="td02" >其中:在池票据余额合计:</td>
                    <td class="td04">
                        <script type="text/javascript">document.write(new Number('${draft_amount}').formatMoney(2,"",",","."));</script>
                    </td>
                    <td class="td01"></td>
                    <td class="td02" >其中:电票已使用合计:</td>
                    <td class="td04">
                        <script type="text/javascript">document.write(new Number('${ebill_used_amount}').formatMoney(2,"",",","."));</script>
                    </td>
                </tr>
                <tr>
                    <td class="td01"></td>
                    <td class="td02" >            保证金余额合计:</td>
                    <td class="td04">
                        <script type="text/javascript">document.write(new Number('${bond_amount}').formatMoney(2,"",",","."));</script>
                    </td>
                    
                    <td class="td01"></td>
                    <td class="td02" >            纸票已使用合计:</td>
                    <td class="td04">
                        <script type="text/javascript">document.write(new Number('${used_amount}').formatMoney(2,"",",","."));</script>
                    </td>
                </tr>
                <tr>
                    <td class="td01"></td>
                    <td class="td02" >            池调节余额合计:</td>
                    <td class="td04">
                        <script type="text/javascript">document.write(new Number('${pool_adjust_amount}').formatMoney(2,"",",","."));</script>
                    </td>
                    <td class="td01"></td>
                    <td class="td02" ></td>
                    <td class="td04">
                    </td>
                </tr>
                
                <tr>
                    <td class="td01"></td>
                    <td class="td02" ><b>集团调配后余额合计:</b></td>
                    <td class="td04" >
                        <b><div id="after_assign_amount"><script type="text/javascript">document.write(new Number('${after_assign_amount}').formatMoney(2,"",",","."));</script></div></b>
                    </td>
                    <td class="td01"></td>
                    <td class="td02" ></td>
                    <td class="td04">
                        
                    </td>
                </tr>
                <tr>
                    <td class="td03" colspan="6" align="right">    
                        <input type="button" class="button" value="保 存" id="butSave"/>
                        <input type="button" class="button" value="返 回" id="butBack"/>
                    </td>
                </tr>
            </table>

            <table width="100%">
                <tr>
                    <td>
                        <table id="datagrid"></table>
                    </td>
                </tr>
            </table>        
        </div>
    </div>

    <div id="dialog"  >
    </div>
    
</form>
<script type="text/javascript"> 
var url = "";
var after_assign_amount = new Number('${after_assign_amount}');
var rowIndex = 0;
var tableTitle = $(".pageTitle").html();
$(document).ready(function(){
    //客户放大镜
    $("#manage_clientname").magnifier({
        url:'${systemctx}/commonmagnifier/queryClientMagnifier.json',
        columns:[[
            {title:'序号',field:'id',hidden:true, formel:'manage_clientid'},
            {title:'管理单位名称',field:'name',width:180,sortable:true, formel:'manage_clientname'},
            {title:'管理单位编号',field:'code',width:180}
        ]],
        sortName:'code',
        sortOrder:'asc',
        formid:'queryform',
        linkName:'name',
        link:'http://www.pan8.net/',
        onBeforeOpen:function(p){//打开放大镜前
          var queryParams = {//放大镜查询SQL所需的参数
              agency_type:'1002',
              clientcode:$("input[name='manage_clientname']").val()
          };
          return queryParams;
        }
    });
    
$('#datagrid').datagrid({
        width:document.documentElement.clientWidth - 50,
        height:'400',
        nowrap:true,
        formid:'queryform',
        autoRowHeight:false,
        striped:true,
        url:'${systemctx}/draft/draftPool/queryDraftPoolAssignInfo4DataGrid.json?draftGroupPoolId=${draftGroupPool.id}',
        sortName:'pool_name',
        sortOrder:'desc',
        remoteSort:false,
        pagination:true,
        rownumbers:true,
        showFooter:true,
        columns:[[
            {field:'ck', checkbox:true},
            {title:'id',field:'id',hidden:true},
            {title:'票据池名称',field:'pool_name',width:135,sortable:true,align:'center'},
            {title:'在池票据余额',field:'draft_amount',width:150,sortable:true,align:'right'},
            {title:'保证金帐户余额',field:'bond_amount',width:150,align:'right'},
            // {title:'电票质押金额',field:'ebill_pledge_amount',width:100,align:'right'},
               {title:'池调节额度',field:'pool_adjust_amount',width:100,align:'right'},
            {title:'纸票已用额度',field:'used_amount',width:150,sortable:true,align:'right'},
            {title:'电票已用额度',field:'ebill_used_amount',width:150,sortable:true,align:'right'},
            // {title:'剩余额度',field:'surplus_amount',width:130,sortable:true,align:'right'},
            {title:'上级分配额度',field:'assigned_amount_temp',width:150,sortable:true,align:'right',editor:{type:'numberbox',options:{precision:2,groupSeparator:','}}}
        ]],
        toolbar:[
                {
                    text:'导出当前列表',iconCls:'icon-export',handler:function(){
                        datagridExcelExport('datagrid','queryform',tableTitle,0);
                    }
                },
                {  
                    text:'导出所有列表',iconCls:'icon-export',handler:function(){
                        datagridExcelExport('datagrid','queryform',tableTitle,1);
                    }
                }
                ],
        onUncheck:function(index, rowData){
            after_assign_amount = totalAssignAmount();
               var ed = $('#datagrid').datagrid('getEditor', {index:index,field:'assigned_amount_temp'});
               // 加上数据库中存储的上级分配金额减去输入的金额
               after_assign_amount = after_assign_amount.sub(new Number(removeAmountFormat($(ed.target).numberbox('getValue')))).add(new Number(removeAmountFormat(rowData['assigned_amount_temp'])));
            document.getElementById("after_assign_amount").innerHTML=after_assign_amount.formatMoney(2,"",",",".");
            // 更新集团调配后余额合计
            $('#datagrid').datagrid('cancelEdit', index);
            
        },
        onCheck:function(index, rowData){
            $('#datagrid').datagrid('beginEdit', index);
            var ed = $('#datagrid').datagrid('getEditor', {index:index,field:'assigned_amount_temp'});
            $(ed.target).numberbox({ onChange: function () {
                    // 校验下级分配的额度不能小于单位已使用的额度
                    if(new Number(removeAmountFormat($(ed.target).numberbox('getValue')))<new Number(removeAmountFormat(rowData['used_amount'])).add(new Number(removeAmountFormat(rowData['ebill_used_amount'])))){
                        alert("上级给下级分配的票据池额度,不能小于当前已使用的余额");
                        $(ed.target).numberbox('setValue',removeAmountFormat(rowData['assigned_amount_temp']));
                    }
                    after_assign_amount = totalAssignAmount();
                    // 更新集团调配后余额合计
                    document.getElementById("after_assign_amount").innerHTML=after_assign_amount.formatMoney(2,"",",",".");
                 }
            });
            $(ed.target).focus();
        },
        onCheckAll:function(rows){
            for(var i=0;i<rows.length;i++){
                // 上级分配金额列置为编辑状态
                $('#datagrid').datagrid('beginEdit', i);
                var ed = $('#datagrid').datagrid('getEditor', {index:i,field:'assigned_amount_temp'});
                // 为编辑对象设置onChange事件
                $(ed.target).numberbox({onChange: function (newValue,oldValue) {
                    // 获取光标所在行的行号
                    var rowIndex = $(this).closest("tr.datagrid-row").attr("datagrid-row-index");
                    var rows = $("#datagrid").datagrid('getRows');
                    // 校验下级分配的额度不能小于单位已使用的额度
                    if(new Number(removeAmountFormat(newValue))<new Number(removeAmountFormat(rows[rowIndex]['used_amount'])).add(new Number(removeAmountFormat(rows[rowIndex]['ebill_used_amount'])))){
                        alert("上级给下级分配的票据池额度,不能小于当前已使用的余额");
                        $(this).numberbox('setValue',removeAmountFormat(oldValue));
                        $(this).focus();
                    }
                    after_assign_amount = totalAssignAmount();
                    // 更新集团调配后余额合计
                    document.getElementById("after_assign_amount").innerHTML=after_assign_amount.formatMoney(2,"",",",".");
                 }
                 });
            }
        },
        onUncheckAll:function(rows){
            for(var index=0;index<rows.length;index++){
                $('#datagrid').datagrid('cancelEdit', index); 
            }
            after_assign_amount = new Number('${after_assign_amount}');
            // 更新集团调配后余额合计
            document.getElementById("after_assign_amount").innerHTML=after_assign_amount.formatMoney(2,"",",",".");
        },
        onClickRow:function(index,row){
            rowIndex = index;
            alert(rowIndex);
        }
    });
    $("#butBack").click(function(){
        window.location.href="${systemctx}/draft/draftPool/grouppool/groupPoolAssignQuery.jsp";
    });
    $("#butSave").click(function(){
        $.messager.confirm('选择', '是否保存选中票据池分配额度', function(r){
            if(r){
                var selected_rows = $("#datagrid").datagrid('getSelections');
                if(selected_rows==""||selected_rows.length==0) {
                    alert("列表中没有选中的数据");
                    return;
                }else {
                    //    下级分配的金额不能大于调配前的票据池余额
                    if(after_assign_amount>new Number('${draft_amount}').add(new Number('${bond_amount}')).add(new Number('${pool_adjust_amount}'))){
                        alert("集团调配后的余额合计不能大于调配前的池余额合计");
                        return;
                    }
                      // 选中的id,分配金额收集
                    var ids="";
                    var assignAmounts ="";
                    var rows = $("#datagrid").datagrid('getRows');
                    for(var i=0; i<rows.length; i++){
                        var ed = $('#datagrid').datagrid('getEditor', {index:i,field:'assigned_amount_temp'});
                        if(ed!=null){
                            ids = rows[i]["id"] + "," + ids;
                            assignAmounts = $(ed.target).numberbox('getValue') + "," + assignAmounts;
                        }
                    }
                    ids = ids.substring(0, ids.length-1);
                    assignAmounts = assignAmounts.substring(0, assignAmounts.length-1);
                    showSending();
                    $.ajax({
                        type:'POST',                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
                            url:"${systemctx}/draft/draftPool/saveDraftPoolAssign.json",
                            data:{draftPoolAssignIds:ids,assignAmounts:assignAmounts},
                            dataType:'json',
                             success:function(data){
                                closeSending();
                                if(data.messagetype==1){
                                   $.messager.alert("操作提示",data.message , "info", function (){
                                     window.location.href="${systemctx}/draft/draftPool/grouppool/groupPoolAssignQuery.jsp";
                                  });
                                }else if(data.messagetype==2){
                                    $.messager.alert("操作提示",data.message , "error");
                                }
                            },
                            error:function(XMLHttpRequest,textStatus,errorThrown){
                            try{
                            }catch (e){}
                           }
                   });
                }
            }
        });
    });
    
});

function fnPoolDetail(id,canRevMargin){
    window.location.href="${systemctx}/draft/query/draftpoolinfoquery/draftPoolMarginQuery.jsp?poolId="+id+"&canRevMargin="+canRevMargin;
}
// 循环合计金额
function totalAssignAmount(){
    var after_assign_amount = 0.00;
    var rows = $("#datagrid").datagrid('getRows');
    for(var i=0;i<rows.length;i++){
        var ed = $('#datagrid').datagrid('getEditor', {index:i,field:'assigned_amount_temp'});
        if(ed!=null){
            after_assign_amount = after_assign_amount.add(new Number(removeAmountFormat($(ed.target).numberbox('getValue'))));
        }else{
            after_assign_amount = after_assign_amount.add(new Number(removeAmountFormat(rows[i]['assigned_amount_temp'])));
        }
    }
    return after_assign_amount;
} 

</script>
<%-- 引入页面尾 --%>
<%@ include file="/pageFloor.jsp" %>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值