jQuery EasyUI编辑DataGrid用combobox实现多级联动

我在项目中设计课程表的时候需要用到老师和分类之间的多级联动。

首先是一张效果图:

下面是实现的代码:

<body>
<script type= "text/javascript" >
$( function (){
var editing ; //判断用户是否处于编辑状态
var flag ; //判断新增和修改方法
$( '#set_schedule' ).datagrid({
idField: 'id' ,
fitColumns: false ,
url: 'scheduleAction_loadScheduleData.action?sureDocumentId=' +$( "#sureDocumentId" ).val() ,
striped: true ,
loadMsg: '数据正在加载,请耐心的等待...' ,
rownumbers: true ,
singleSelect : true ,
frozenColumns:[[
{field: 'ck' , checkbox: true }
]],
columns:[[
{
field: 'dateTime' ,
title: '时间' ,
width:100 ,
align: 'center' ,
editor:{
type: 'datebox' ,
options:{
required: true ,
missingMessage: '时间必填!' ,
editable: false
}
}
},
{
field: 'morningTime' ,
title: '上午上课时间段' ,
width:126 ,
align: 'center' ,
editor:{
type: 'validatebox' ,
options:{
required: true ,
missingMessage: '时间段必填!'
}
}
},
{
field: 'morningCourse' ,
title: '上午课程' ,
width:100 ,
editor:{
type: 'validatebox' ,
options:{
required: true ,
missingMessage: '课程必填!'
}
}
},
{
field: 'aa1' ,
title: '主讲老师分类' ,
width:100 ,
editor : {
type : 'combobox' ,
options : {
url: 'codeTypeAction_search.action?parentId=0&type=27' ,
valueField: 'id' ,
textField: 'name' ,
onSelect: function (data){
var row = $( '#set_schedule' ).datagrid( 'getSelected' );
var rowIndex = $( '#set_schedule' ).datagrid( 'getRowIndex' ,row); //获取行号
var thisTarget = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'aa1' }).target;
var value = thisTarget.combobox( 'getValue' );
var target = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'bb1' }).target;
target.combobox( 'clear' ); //清除原来的数据
var url = 'codeTypeAction_search.action?type=28&parentId=' +value;
target.combobox( 'reload' , url); //联动下拉列表重载
}
}
}
},
{
field: 'bb1' ,
title: '主讲老师细类' ,
width:100 ,
editor : {
type : 'combobox' ,
options : {
url: 'codeTypeAction_search.action?type=28' ,
valueField: 'id' ,
textField: 'name' ,
onSelect: function (data){
var row = $( '#set_schedule' ).datagrid( 'getSelected' );
var rowIndex = $( '#set_schedule' ).datagrid( 'getRowIndex' ,row); //获取行号
var thisTarget = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'bb1' }).target;
var value = thisTarget.combobox( 'getValue' );
var target = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'morningTeacherId' }).target;
target.combobox( 'clear' ); //清除原来的数据
var url = 'teacherAction_search.action?teacherTypeId2=' +value;
target.combobox( 'reload' , url); //联动下拉列表重载
}
}
}
},
{
field: 'morningTeacherId' ,
title: '主讲老师' ,
width:100 ,
editor : {
type : 'combobox' ,
options : {
url: 'teacherAction_search.action' ,
valueField: 'id' ,
textField: 'name'
}
}
},
{
field: 'afternoonTime' ,
title: '下午上课时间段' ,
width:126 ,
align: 'center' ,
editor:{
type: 'validatebox' ,
options:{
required: true ,
missingMessage: '时间段必填!'
}
}
},
{
field: 'afternoonCourse' ,
title: '下午课程' ,
width:100 ,
editor:{
type: 'validatebox' ,
options:{
required: true ,
missingMessage: '课程必填!'
}
}
},
{
field: 'aa2' ,
title: '主讲老师分类' ,
width:100 ,
editor : {
type : 'combobox' ,
options : {
url: 'codeTypeAction_search.action?parentId=0&type=27' ,
valueField: 'id' ,
textField: 'name' ,
onSelect: function (data){
var row = $( '#set_schedule' ).datagrid( 'getSelected' );
var rowIndex = $( '#set_schedule' ).datagrid( 'getRowIndex' ,row); //获取行号
var thisTarget = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'aa2' }).target;
var value = thisTarget.combobox( 'getValue' );
var target = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'bb2' }).target;
target.combobox( 'clear' ); //清除原来的数据
var url = 'codeTypeAction_search.action?type=28&parentId=' +value;
target.combobox( 'reload' , url); //联动下拉列表重载
}
}
}
},
{
field: 'bb2' ,
title: '主讲老师细类' ,
width:100 ,
editor : {
type : 'combobox' ,
options : {
url: 'codeTypeAction_search.action?type=28' ,
valueField: 'id' ,
textField: 'name' ,
onSelect: function (data){
var row = $( '#set_schedule' ).datagrid( 'getSelected' );
var rowIndex = $( '#set_schedule' ).datagrid( 'getRowIndex' ,row); //获取行号
var thisTarget = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'bb2' }).target;
var value = thisTarget.combobox( 'getValue' );
var target = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'afternoonTeacherId' }).target;
target.combobox( 'clear' ); //清除原来的数据
var url = 'teacherAction_search.action?teacherTypeId2=' +value;
target.combobox( 'reload' , url); //联动下拉列表重载
}
}
}
},
{
field: 'afternoonTeacherId' ,
title: '主讲老师' ,
width:100 ,
editor : {
type : 'combobox' ,
options : {
url: 'teacherAction_search.action' ,
valueField: 'id' ,
textField: 'name'
}
}
},
{
field: 'eveningTime' ,
title: '晚上上课时间段' ,
width:126 ,
align: 'center' ,
editor:{
type: 'validatebox' ,
options:{
required: true ,
missingMessage: '时间段必填!'
}
}
},
{
field: 'eveningCourse' ,
title: '晚上课程' ,
width:100 ,
editor:{
type: 'validatebox' ,
options:{
required: true ,
missingMessage: '课程必填!'
}
}
},
{
field: 'aa3' ,
title: '主讲老师分类' ,
width:100 ,
editor : {
type : 'combobox' ,
options : {
url: 'codeTypeAction_search.action?parentId=0&type=27' ,
valueField: 'id' ,
textField: 'name' ,
onSelect: function (data){
var row = $( '#set_schedule' ).datagrid( 'getSelected' );
var rowIndex = $( '#set_schedule' ).datagrid( 'getRowIndex' ,row); //获取行号
var thisTarget = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'aa3' }).target;
var value = thisTarget.combobox( 'getValue' );
var target = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'bb3' }).target;
target.combobox( 'clear' ); //清除原来的数据
var url = 'codeTypeAction_search.action?type=28&parentId=' +value;
target.combobox( 'reload' , url); //联动下拉列表重载
}
}
}
},
{
field: 'bb3' ,
title: '主讲老师细类' ,
width:100 ,
editor : {
type : 'combobox' ,
options : {
url: 'codeTypeAction_search.action?type=28' ,
valueField: 'id' ,
textField: 'name' ,
onSelect: function (data){
var row = $( '#set_schedule' ).datagrid( 'getSelected' );
var rowIndex = $( '#set_schedule' ).datagrid( 'getRowIndex' ,row); //获取行号
var thisTarget = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'bb3' }).target;
var value = thisTarget.combobox( 'getValue' );
var target = $( '#set_schedule' ).datagrid( 'getEditor' , { 'index' :rowIndex, 'field' : 'eveningTeacherId' }).target;
target.combobox( 'clear' ); //清除原来的数据
var url = 'teacherAction_search.action?teacherTypeId2=' +value;
target.combobox( 'reload' , url); //联动下拉列表重载
}
}
}
},
{
field: 'eveningTeacherId' ,
title: '主讲老师' ,
width:100 ,
editor : {
type : 'combobox' ,
options : {
url: 'teacherAction_search.action' ,
valueField: 'id' ,
textField: 'name'
}
}
}
]] ,
pagination: true ,
pageSize: 10 ,
pageList:[5,10,15,20,50] ,
toolbar:[
{
text: '新增课程' ,
iconCls: 'icon-add' ,
handler: function (){
if (editing == undefined){
flag = 'add' ;
//1 先取消所有的选中状态
$( '#set_schedule' ).datagrid( 'unselectAll' );
//2追加一行
$( '#set_schedule' ).datagrid( 'appendRow' ,{description: '' });
//3获取当前页的行号
editing = $( '#set_schedule' ).datagrid( 'getRows' ).length -1;
//4选中并开启编辑状态
$( '#set_schedule' ).datagrid( 'selectRow' ,editing);
$( '#set_schedule' ).datagrid( 'beginEdit' , editing);
}
}
} /* ,{
text:'修改课程',
iconCls:'icon-edit' ,
handler:function(){
var arr = $('#set_schedule').datagrid('getSelections');
if(arr.length != 1){
$.messager.show({
title:'提示信息',
msg:'只能选择一条记录进行修改!'
});
} else {
if(editing == undefined){
flag = 'edit';
//根据行记录对象获取该行的索引位置
editing = $('#set_schedule').datagrid('getRowIndex' , arr[0]);
//开启编辑状态
$('#set_schedule').datagrid('beginEdit',editing);
}
}
}
} */ ,{
text: '保存课程' ,
iconCls: 'icon-save' ,
handler: function (){
//保存之前进行数据的校验 , 然后结束编辑并师傅编辑状态字段
if ($( '#set_schedule' ).datagrid( 'validateRow' ,editing)){
$( '#set_schedule' ).datagrid( 'endEdit' , editing);
editing = undefined;
}
}
},{
text: '删除课程' ,
iconCls: 'icon-remove' ,
handler: function (){
var arr = $( '#set_schedule' ).datagrid( 'getSelections' );
if (arr.length <= 0 ){
$.messager.show({
title: '提示信息' ,
msg: '请选择进行删除操作!'
});
} else {
$.messager.confirm( '提示信息' , '确认删除?' , function (r){
if (r){
var ids = '' ;
for ( var i = 0 ; i < arr.length ; i++){
ids += arr[i].id + ',' ;
}
ids = ids.substring(0,ids.length-1);
$.post( 'scheduleAction_delete.action' , {ids:ids}, function (result){
$( '#set_schedule' ).datagrid( 'reload' );
$.messager.show({
title: '提示信息' ,
msg: '操作成功!'
});
});
} else {
return ;
}
});
}
}
},{
text: '取消操作' ,
iconCls: 'icon-cancel' ,
handler: function (){
//回滚数据
$( '#set_schedule' ).datagrid( 'rejectChanges' );
editing = undefined;
}
}
] ,
onAfterEdit: function (index , record){
var data = $( '#moduleform' ).serialize();
$.post(flag== 'add' ? 'scheduleAction_addSchedule.action?' +data: 'scheduleAction_updateSchedule.action' , record , function (result){
var data = $.parseJSON(result);
$( '#set_schedule' ).datagrid( 'reload' );
$.messager.show({
title: '提示信息' ,
msg:data.message
});
}, 'text' );
}
});
});
</script>
<form id= "moduleform" method= "post" >
<s:hidden name= "sureDocumentId" id= "sureDocumentId" ></s:hidden>
<table cellspacing= "1" cellpadding= "5" class= "tb_background2" width= "100%" >
<tr>
<td width= "20%" class= "td_right" >总学时:</td>
<td width= "28%" class= "td_left" >
<s:textfield name= "totalLearnTime" id= "totalLearnTime" size= "32" />学时
</td>
<td width= "20%" class= "td_right" >是否可见:</td>
<td width= "28%" class= "td_left" >
<s:select list= "#{'0':'可见','1':'不可见' }" cssStyle= "width:200px;" name= "type" id= "type" ></s:select>
</td>
</tr>
</table>
</form>
<table id= "set_schedule" ></table>
</body>

转载于:https://www.cnblogs.com/sjqq/p/6550167.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值