zoukankan      html  css  js  c++  java
  • easyui datagrid行编辑中数据联动

    easyui的datagrid中行内编辑使用数据联动。即:当编辑产品编号时,该行的产品名称自动根据产品编号显示出来。

    在编辑中获取当前行的索引

            function getRowIndex(target) {
                var tr = $(target).closest('tr.datagrid-row');
                return parseInt(tr.attr('datagrid-row-index'));
            }


    在编辑中获取当前行的值

    var editor = $('#tt').datagrid('getEditors', rowIndex);
    return $(editor[0].target).numberbox('getValue');

    jQuery EasyUI 1.4.1.x

        <link href="~/Content/bootstrap.css?v=2" rel="stylesheet" />
        <link href="~/Content/themes/default/easyui.css" rel="stylesheet" />
        <link href="~/Content/themes/icon.css" rel="stylesheet" />
        <link href="~/Content/Site.css" rel="stylesheet" />
    
        <script src="~/Scripts/jquery-3.2.1.min.js?v=2"></script>
        <script src="~/Scripts/jquery.easyui.min.js?v=2"></script>
        <script src="~/Scripts/easyui-lang-zh_CN.js"></script>
        <script src="~/Scripts/My97DatePicker/WdatePicker.js"></script>
        <script src="~/Scripts/bootstrap.min.js"></script>
    
    <div style="padding-top:20px;860px; margin:auto;">
    
        <div class="row">
    
            <div style="margin:10px 0">
                <a href="#" onclick="insert()"
                   class="easyui-linkbutton c1" iconCls="icon-add">添加</a>
            </div>
    
            <table id="tt"></table>
    
        </div>
    </div>
        <script type="text/javascript">
            var jsondata = @Html.Raw(ViewBag.jsondata);
            var pc = @Html.Raw(ViewBag.pc);
            $(function () {
                $('#tt').datagrid({
                    title: '仓库账务库存',
                    iconCls: 'icon-edit',
                     800,
                    height: 300,
                    singleSelect: true,
                    columns: [[
                            {
                                field: 'productid', title: '产品编码',  80, align: 'right'
                                , editor: {
                                    type: 'numberbox',
                                    options: {
                                        required: true,
                                        onChange: function () {//输入产品编码,产品名称和批次联动
                                            changeproduct(this);
                                        }
                                    }
                                }
                            },
                            {
                                field: 'productname', title: '产品名称',  200
                                , editor: {
                                    type: 'text'//产品名称这里先设置为text,然后再设置为只读。如果没有type就获取不到,无法js更新值
                                }
                            },
                            {
                                field: 'pc', title: '批次',  150, align: 'left'
                                , editor: {
                                    type: 'combobox'
                                    , options: {
                                        valueField: 'label',
                                        textField: 'value',
                                        data: pc,
                                        onChange: function () {//combobox下拉框选择更改,数量联动                                        
                                            changepc(this);
    
                                        }
    
                                    }
                                }
                            },
                            { field: 'ztsl', title: '整托数量',  80, align: 'right', editor: 'text' },
                            { field: 'zjsl', title: '整件数量',  80, align: 'right',editor: 'text' },
                            { field: 'hwh', title: '货位号',  80,align: 'right', editor: 'text' },
                            {
                                field: 'action', title: '',  80, align: 'center',
                                formatter: function (value, row, index) {
                                    if (row.editing) {
                                        var s = '<a href="#"  onclick="saverow(this)"  iconCls="icon-save">保存</a>&nbsp;';
                                        var c = '<a href="#"  onclick="cancelrow(this)"  iconCls="icon-cancel">取消</a>';
                                        return s + c;
                                    } else {
                                        var e = '<a href="#"  onclick="editrow(this)" iconCls="icon-edit">修改</a>&nbsp;';
                                        var d = '<a href="#"  onclick="deleterow(this)" iconCls="icon-remove">删除</a>';
                                        return e + d;
                                    }
                                }
                            }
                    ]],
                    onBeforeEdit: function (index, row) {
                        row.editing = true;
                        updateActions(index);
                    },
                    onAfterEdit: function (index, row) {
                        row.editing = false;
                        updateActions(index);
                    },
                    onCancelEdit: function (index, row) {
                        row.editing = false;
                        updateActions(index);
                    }
                });
            });
            function updateActions(index) {
                $('#tt').datagrid('updateRow', {
                    index: index,
                    row: {}
                });
            }
            //获取当前行的索引
            function getRowIndex(target) {
                var tr = $(target).closest('tr.datagrid-row');
                return parseInt(tr.attr('datagrid-row-index'));
            }
    
            //批次combobox下拉框选择更改,数量联动
            function changepc(r){            
                var rowindex = getRowIndex(r);
                var editor = $('#tt').datagrid('getEditors', rowindex);
                var productid=$(editor[0].target).numberbox('getValue');
                var pctemp=$(editor[2].target).numberbox('getValue');
    
                for(var i=0;i<jsondata.length;i++){
                    if(jsondata[i].productid == productid && jsondata[i].pc == pctemp){
                        $(editor[3].target).val(jsondata[i].ztsl);
                        $(editor[4].target).val(jsondata[i].zjsl);
                        $(editor[5].target).val(jsondata[i].hwh);
                    }
                }
            }
            
            //产品编码textbox更改,批次下拉框联动
            function changeproduct(r){            
                var rowindex = getRowIndex(r);
                var editor = $('#tt').datagrid('getEditors', rowindex);
                var productid=$(editor[0].target).numberbox('getValue');
    
                var temppc = new Array();
                var rownum = (rowindex + 1).toString();
    
                for(var i=0;i<jsondata.length;i++){
                    if(jsondata[i].productid == productid){
                        var tpc = { "label":jsondata[i].pc,"value":jsondata[i].pc };
                        temppc.push(tpc);
                        $(editor[1].target).val(jsondata[i].productname);
                    }
                }
                                            
                $(editor[2].target).combobox({ data : temppc});
            }
    
            //编辑
            function editrow(target) {
                var rowIndex = getRowIndex(target);
                $('#tt').datagrid('beginEdit', getRowIndex(target));
    
                initrow(rowIndex);
    
            }
            //删除一行
            function deleterow(target) {
                $('#tt').datagrid('deleteRow', getRowIndex(target));
            }
            //保存编辑
            function saverow(target) {
                $('#tt').datagrid('endEdit', getRowIndex(target));
            }
            //取消编辑
            function cancelrow(target) {
                $('#tt').datagrid('cancelEdit', getRowIndex(target));
            }
            //新增一行
            function insert() {
                var rowcount = $('#tt').datagrid('getRows').length;
                $('#tt').datagrid('insertRow', {
                    index: rowcount,
                    row: {
                    }
                });
                $('#tt').datagrid('selectRow', rowcount);
                $('#tt').datagrid('beginEdit', rowcount);
                initrow(rowcount);
            }
    
            //新增或编辑行时,先初始化行内的编辑器
            function initrow(rowIndex) {
                var editor = $('#tt').datagrid('getEditors', rowIndex);
                var productid = editor[0];
                $(productid.target).focus();
    
                //设置产品名称、数量等只读
                $(editor[1].target).attr("disabled", true);
                $(editor[3].target).attr("disabled", true);
                $(editor[4].target).attr("disabled", true);
                $(editor[5].target).attr("disabled", true);
    
                $(editor[0].target).css("text-align", "right");
                $(editor[3].target).css("text-align", "right");
                $(editor[4].target).css("text-align", "right");
                $(editor[5].target).css("text-align", "right");
            }
        </script>
  • 相关阅读:
    剑指offer(45)扑克牌顺子
    剑指offer(44)单词翻转序列
    剑指offer(43)左旋转字符串
    剑指offer(42)和为S的字符串
    剑指offer(41)和为S的连续正数序列
    剑指offer(40)数组中只出现一次的数字
    剑指offer(39)平衡二叉树
    面试金典——字符串压缩
    LeetCode——恢复二叉搜索树
    LeetCode——修剪二叉搜索树
  • 原文地址:https://www.cnblogs.com/xbzhu/p/9366254.html
Copyright © 2011-2022 走看看