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. CSAPP阅读笔记-汇编语言初探(控制类指令)-来自第三章3.6的笔记-P135-P163

    1.正溢出与负溢出: 首先,一个正数与一个负数相加,不可能溢出,因为结果的绝对值一定小于两个加数的绝对值,既然两个加数能合理表示出来,结果一定也能合理表示出来. 其次,正溢出是由于两个很大的正数相加, ...

  2. 《大数据日知录》读书笔记-ch16机器学习:分布式算法

    计算广告:逻辑回归 千次展示收益eCPM(Effective Cost Per Mille) eCPM= CTR * BidPrice 优化算法 训练数据使用:在线学习(online learning ...

  3. docker volumes?

    我发现我无法mount东西出来.都是会被host的覆盖掉的.,

  4. js中的 == 与 === 、永远不要使用 ==

    前言: 很久没有复习基础了,所以导致做项目的时候被坑,咳咳,基础还是很重要的. === 是没有强制类型转换的,和其他大部分语言的 == 是一样的.而js中 == 是有类型转换的,这也是js饱受诟病的原 ...

  5. 如何在Firebug中修改js变量的值

    在做项目的时候,经常需要调试js,要是项目环境在本地,可以直接在js代码里面设置断点或者修改变量值.但是在测试或者生产等线上环境时,再频繁登录服务器去修改js代码就显得麻烦了.项目线上环境,可以在fi ...

  6. iOS 系统架构及常用框架(iOS的系统架构分为四个层次)

    1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多 2.iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer).媒体层(Media l ...

  7. freemarker实现通用布局的模板拆分与复用

    原文:http://www.hawu.me/coding/733 一.基础页面布局 假设我们项目页面的通用布局如下图所示: 实现这样的布局的基本html代码如下:           XHTML   ...

  8. Bash编程(5) Shell方法

    shell的方法在相同的进程内执行,与调用它的脚本一致.对于方法来说,脚本中的所有变量均可见,且不需要执行export.方法中可以创建局部变量,且不影响正在调用的脚本. 1. 定义语法 (1) Kor ...

  9. Scrum 冲刺博客第一篇

    一.各个成员在 Alpha 阶段认领的任务 成员 Alpha 阶段认领的任务 黄腾龙 主要功能模块代码开发 叶城龙 部分模块代码开发,博客撰写 李心宇 代码测试,博客撰写 余腾鑫 界面设计,博客撰写 ...

  10. jmeter单一接口测试

    在使用jmeter进行单一接口测试之前,我们先来了解一下一个用户请求的过程,如下: 1)用户通过浏览器发起一个请求: 2)用户收到服务器返回的响应数据. 如上,就是一个WEB的请求/响应模型 jmet ...