假设有这样的场景,使用easyUI的可编辑表格时,有些内容是通过其中一个编辑器编辑完后到后台取数据,返回数据后插入到部分编辑器中,为编辑器设置值可以用以下的方法
function setGridFieldsValue(gridID,rowIndex,fieldArr,rowData,focusField){
//gridID 是表格的ID,rowIndex是当前编辑行的索引,fieldArr是要插入值的字段数组,rowData是要插入的数据(json对象),focusField是插入数据后,焦点在哪个字段上
var editors = $("#"+gridID).datagrid("getEditors",rowIndex),
editorLength = editors.length;
for(var j=0; j<fieldArr.length; j++){
for(var i=0; i<editorLength; i++){
var ed = editors[i];
if(ed.field == fieldArr[j]){
$(ed.target)[ed.type]("setValue",rowData[fieldArr[j]]);
}else if(ed.field == focusField){
$(ed.target.siblings("span").children("input")).focus();
}
}
}
$("#"+gridID).datagrid('clearSelections');
}完整示例代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>可编辑表格编辑器设置值</title>
<link rel="stylesheet" type="text/css" href="../bootstrap/css/bootstrap.css"/>
<link rel="stylesheet" type="text/css" href="../easyui1.5/themes/bootstrap/easyui.css"/>
<link rel="stylesheet" type="text/css" href="../easyui1.5/themes/icon.css"/>
<script src="../easyui1.5/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../easyui1.5/jquery.easyui.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../easyui1.5/jquery.edatagrid.js" type="text/javascript" charset="utf-8"></script>
<script src="../easyui1.5/locale/easyui-lang-zh_CN.js" type="text/javascript" charset="utf-8"></script>
<style type="text/css">
/**
* 解决在编辑时看不到内容的问题,这是由于使用easyUI的bootstrap主题导致的
*/
.datagrid-row.datagrid-row-editing.datagrid-row-selected{
background: #F3F3F3;
color: #333333;
}
</style>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-sm-12">
<table id="editorEventGrid" style="width: 100%;height: 400px;"></table>
<div id="gridToolbar" class="container-fluid">
<div class="row">
<div class="col-sm-12">
<a class="btn btn-sm btn-primary pull-right" onclick="addRow()">增加</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var userData = [
{"uid":1,"username":"张三","age":20,"sex":0,"cell":"13076847475","birthday":"1990-01-01"},
{"uid":2,"username":"李四","age":30,"sex":1,"cell":"15876847478","birthday":"1990-02-02"},
{"uid":3,"username":"王五","age":40,"sex":0,"cell":"18976847479","birthday":"1990-03-03"}
]
$(function(){
var rowEditingIndex=0;
$("#editorEventGrid").edatagrid({
singleSelect:true,
striped:true,
nowrap:true,
fitColumns:true,
loadMsg:"加载数据中...",
pagination:true,
pageNumber:1,
pageSize:30,
pageList:[30,40,50],
toolbar:"#gridToolbar",
columns:[[
{field:'uid',title:'姓名',width:80,formatter:function(value,row,index){return row.username},editor:{type:'combobox',options:{
required:true,
textField:'name',
valueField:'uid',
selectOnNavigation:false,
data:[
{name:"张三",uid:1},
{name:'李四',uid:2},
{name:'王五',uid:3},
{name:'王老五',uid:4}
],
onChange:function(n,o){
if(n){
//正常情况下,应该到后台获取数据
var obj = getObj(n);
if(obj){
setGridFieldsValue("editorEventGrid",rowEditingIndex,["age","sex","cell","birthday"],obj,"address");
}
}
}
}}},
{field:'age',title:'年龄',width:40,align:'right',editor:'numberbox'},
{field:'sex',title:'性别',width:40,formatter:function(value,row,index){return row.sexName},editor:{type:'combobox',options:{
textField:'text',
valueField:'value',
data:[
{text:"男",value:0},
{text:"女",value:1}
]
}}},
{field:'cell',title:'手机',width:80,align:'center',editor:{type:'numberbox',options:{required:true}}},
{field:'address',title:'地址',width:150,editor:{type:"textbox",options:{required:true}}},
{field:'birthday',title:'生日',width:60,align:'center',editor:'datebox'}
]],
onAdd:function(index,row){
rowEditingIndex = index;
//添加行时,让第一个编辑器获取焦点
$(".datagrid-row-editing .textbox-text")[0].focus();
//为编辑器添加键盘事件
var editors = $("#editorEventGrid").edatagrid("getEditors",index);
for(var i=0; i<editors.length; i++){
var editor = editors[i];
$(editor.target.siblings("span").children("input")).on("keydown",function(e){
var code = e.keyCode || e.which;
if(code == 13){//13是回车键
addRow();
}else if(code == 38){//38是方向↑键
cancelRow();
}
});
}
},
onEndEdit:endEditing
})
});
function addRow(){
$("#editorEventGrid").edatagrid("addRow");
}
function cancelRow(){
$("#editorEventGrid").edatagrid("cancelRow");
}
function endEditing(index,row){
var ed = $("#editorEventGrid").edatagrid("getEditor",{index:index,field:'uid'});
var ed2 = $("#editorEventGrid").edatagrid("getEditor",{index:index,field:'sex'});
row.username = $(ed.target).combobox("getText");
row.sexName = $(ed2.target).combobox("getText");
}
function setGridFieldsValue(gridID,rowIndex,fieldArr,rowData,focusField){
//gridID 是表格的ID,rowIndex是当前编辑行的索引,fieldArr是要插入值的字段数组,rowData是要插入的数据(json对象),focusField是插入数据后,焦点在哪个字段上
var editors = $("#"+gridID).datagrid("getEditors",rowIndex),
editorLength = editors.length;
for(var j=0; j<fieldArr.length; j++){
for(var i=0; i<editorLength; i++){
var ed = editors[i];
if(ed.field == fieldArr[j]){
$(ed.target)[ed.type]("setValue",rowData[fieldArr[j]]);
}else if(ed.field == focusField){
$(ed.target.siblings("span").children("input")).focus();
}
}
}
}
function getObj(uid){
for(var i=0; i<userData.length; i++){
if(userData[i].uid == uid){
return userData[i]
}
}
}
</script>
</body>
</html>
版权声明:本文为liupq66原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。