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;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> ';
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> ';
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行编辑中数据联动的更多相关文章
- 关于EasyUI DataGrid行编辑时嵌入时间控件
本人做一个名为“安徽中控”项目时,为快速开发基础数据增删改模块,遂采用EasyUIDatagrid将所有增删改查的操作都集中于表格中,并且所有增删改查操作都集中于泛型对象,从而不必为每个表写具体的增删 ...
- easyui datagrid 行编辑功能
datagrid现在具有行编辑能力了,使用时只须在columns中为需要编辑的列添加一个editor属性,编辑保存时同时具有数据校验能力. 看一个例子效果图: 代码如下: $('#tt').datag ...
- EasyUI datagrid 行编辑
一.HTML: <div class="info"> <div class="info_tt"> <span class=&quo ...
- easyui datagrid 批量编辑和提交数据
easyui datagrid 行编辑和提交方,废话就不多说了,直接上代码 <div style="margin: 5px;"> <table id=" ...
- EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他
原创 : EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他 转载,请注明出处哦!谢谢! 原创 : EasyUI datagrid 明细表格中编辑框 事件绑 ...
- Jquery easyui开启行编辑模式增删改操作
Jquery easyui开启行编辑模式增删改操作 Jquery easyui开启行编辑模式增删改操作先上图 Html代码: <table id="dd"> </ ...
- [转]Jquery easyui开启行编辑模式增删改操作
本文转自:http://www.cnblogs.com/nyzhai/archive/2013/05/14/3077152.html Jquery easyui开启行编辑模式增删改操作先上图 Html ...
- easyui datagrid行合并
easyui datagrid行合并 合并方法 /** * EasyUI DataGrid根据字段动态合并单元格 * 参数 tableID 要合并table的id * 参数 colList 要合并的列 ...
- Easyui datagrid行内【添加】、【编辑】、【上移】、【下移】
前几天项目中遇到一个需求用到了Easyui datagrd行内添加和编辑数据,同时对行内数据上移下移,所以对这几个功能做个总结. 1.首先大概说下这几个功能里用到的主要方法,行内添加数据主要是添加列的 ...
随机推荐
- 实现接口必须要加注解@Override吗
不一定的,但是我们的编译器在查询我们重写的方法,方法名,参数,返回类型的时候,是能够根据注解来帮助我们判断方法重写的正确与否 所以我们有必要在编写过程中加上@Override,虽然我们的eclipse ...
- 关于 vertical-align 的一些小知识
引子 在日常开发过程中,我们经常会遇到如下的场景,一行中既有图片也有文字,而且图片还要和文字对齐.效果如下: 通常代码如下: <!DOCTYPE html> <html> &l ...
- [目录]ASP.NET web api开发实战
第一章:Restful web service v.s. RPC style web service 第二章:ASP.NET web api v.s. WCF v.s. ASP.NET web ser ...
- 九度oj 1032 ZOJ 2009年浙江大学计算机及软件工程研究生机试真题
题目1032:ZOJ 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4102 解决:2277 题目描述: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当 ...
- ES6学习准备
ES6学习准备 选择运行环境 ES6的语法,nodeJs.浏览器不一定都支持,不同版本的支持情况不一样.在学习过程中,如何确定是自己写的代码有问题,还是运行环境不支持呢? 首先,浏览器端一般支持的特性 ...
- 解决IntelliJ IDEA导入本地项目不能切换github容器的问题
问题场景: 复制本地一个github项目到IDEA中,本地项目容器是A,新项目的容器仍然是A. 解决方法: 1.打开项目在资源管理器中的位置,隐藏的文件项目查看√上,删掉.git文件夹. 2. 3.选 ...
- .netCore2.0 依赖注入
依赖注入(ID)是一种实现对象及其合作者或者依赖想之间松散耦合的技术对于传统的方法来说,获取类的方法通常用new如下 public class DIController : Controller { ...
- js 常用脚本
1.判断电话号码和手机号码 var tel = $("#tel").val(); if (isNotBlank($.trim(tel))) { //不为空的情况下判断符合手机号码标 ...
- CentOS7部署.Net Core2.0站点(上)
其实类似的教程网上已经有很多了,之所以要写,是应为发现在使用最新的centos7和.netcore2.1版本时还是遇到了不少坑,所以记录下,以后希望大家能少走弯路. 一.安装CentOS7 我是用虚拟 ...
- svn在commit后报错:is scheduled for addition, but is missing
今天通过svn 的cr(code review)代码审核后,我欲执行svn ci -m"xxxxxxx(提交注释) ISSUE=3380305",但是没有提交成功,SVN报错啦! ...