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;width: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',
width: 800,
height: 300,
singleSelect: true,
columns: [[
{
field: 'productid', title: '产品编码', width: 80, align: 'right'
, editor: {
type: 'numberbox',
options: {
required: true,
onChange: function () {//输入产品编码,产品名称和批次联动
changeproduct(this);
}
}
}
},
{
field: 'productname', title: '产品名称', width: 200
, editor: {
type: 'text'//产品名称这里先设置为text,然后再设置为只读。如果没有type就获取不到,无法js更新值
}
},
{
field: 'pc', title: '批次', width: 150, align: 'left'
, editor: {
type: 'combobox'
, options: {
valueField: 'label',
textField: 'value',
data: pc,
onChange: function () {//combobox下拉框选择更改,数量联动
changepc(this); } }
}
},
{ field: 'ztsl', title: '整托数量', width: 80, align: 'right', editor: 'text' },
{ field: 'zjsl', title: '整件数量', width: 80, align: 'right',editor: 'text' },
{ field: 'hwh', title: '货位号', width: 80,align: 'right', editor: 'text' },
{
field: 'action', title: '', width: 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>

easyui datagrid行编辑中数据联动的更多相关文章

  1. 关于EasyUI DataGrid行编辑时嵌入时间控件

    本人做一个名为“安徽中控”项目时,为快速开发基础数据增删改模块,遂采用EasyUIDatagrid将所有增删改查的操作都集中于表格中,并且所有增删改查操作都集中于泛型对象,从而不必为每个表写具体的增删 ...

  2. easyui datagrid 行编辑功能

    datagrid现在具有行编辑能力了,使用时只须在columns中为需要编辑的列添加一个editor属性,编辑保存时同时具有数据校验能力. 看一个例子效果图: 代码如下: $('#tt').datag ...

  3. EasyUI datagrid 行编辑

    一.HTML: <div class="info"> <div class="info_tt"> <span class=&quo ...

  4. easyui datagrid 批量编辑和提交数据

    easyui datagrid 行编辑和提交方,废话就不多说了,直接上代码 <div style="margin: 5px;"> <table id=" ...

  5. EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他

    原创 : EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他 转载,请注明出处哦!谢谢! 原创 : EasyUI datagrid 明细表格中编辑框 事件绑 ...

  6. Jquery easyui开启行编辑模式增删改操作

    Jquery easyui开启行编辑模式增删改操作 Jquery easyui开启行编辑模式增删改操作先上图 Html代码: <table id="dd"> </ ...

  7. [转]Jquery easyui开启行编辑模式增删改操作

    本文转自:http://www.cnblogs.com/nyzhai/archive/2013/05/14/3077152.html Jquery easyui开启行编辑模式增删改操作先上图 Html ...

  8. easyui datagrid行合并

    easyui datagrid行合并 合并方法 /** * EasyUI DataGrid根据字段动态合并单元格 * 参数 tableID 要合并table的id * 参数 colList 要合并的列 ...

  9. Easyui datagrid行内【添加】、【编辑】、【上移】、【下移】

    前几天项目中遇到一个需求用到了Easyui datagrd行内添加和编辑数据,同时对行内数据上移下移,所以对这几个功能做个总结. 1.首先大概说下这几个功能里用到的主要方法,行内添加数据主要是添加列的 ...

随机推荐

  1. SpringCloud---消息总线---Spring Cloud Bus

    1.概述 1.1 在微服务架构的系统中,我们通常会使用   轻量级的消息代理  来  构建一个共同的消息主题   让系统中所有微服务实例都连接上来: 由于  该主题中产生的消息  会被所有实例监听和消 ...

  2. 递归demo

    递归算法就是直接或间接调用自己的算法 public static void main(String[] args) { int m = sum(9); System.out.println(m); } ...

  3. Java学习之路(二):Java中的方法

    Java中的方法 概念: 为什么要有方法: 提高代码的复用性 什么是方法: 完成特定功能的代码块 格式: 修饰符 返回值类型 方法名(参数){ 方法体语句: return 返回值: } 1.修饰符:例 ...

  4. Python开发利器之UliPad

    一.安装Ulipad 因为ulipad编辑器使用的是wxpython编写的gui,所以我们需要第三方库wxpython的支持,先讲一下Ulipad在Windows系统环境下的安装: 1. 确实自己的w ...

  5. 9、在Shell脚本中调用其他脚本

    在Shell脚本的执行过程中,Shell脚本支持调用另一个Shell脚本,调用的格式为:程序名 实例:在Shell脚本test1中调用test2. 1.调用test2#test1脚本root@ubun ...

  6. Hadoop实战之三~ Hello World

    本文介绍的是在Ubuntu下安装用三台PC安装完成Hadoop集群并运行好第一个Hello World的过程,软硬件信息如下: Ubuntu:12.04 LTS Master: 1.5G RAM,奔腾 ...

  7. 总结—angularjs项目

    我毕业了-------有点期待生活,又点害怕生活. 总结下最近一个月做的这个项目,项目的开发形式也比较新颖,采用的是前后端分离的形式.我负责前端的管理系统开发,另一个哥们负责利用ABP创建接口,整合后 ...

  8. 十、集成使用redis

    一.简介 redis是一种非关系型数据库,它的数据结构是key-value的存储形式:能够支持多种类型的数据存储,如:string/list/map/object...等.springboot自然也对 ...

  9. asm demo

    出处:https://blog.csdn.net/zhangjg_blog/article/details/22976929 package com.gxf.asm; import org.objec ...

  10. 紫书第5章 C++STL

    例题 例题5-1 大理石在哪儿(Where is the Marble?,Uva 10474) 主要是熟悉一下sort和lower_bound的用法 关于lower_bound: http://blo ...