首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

ext 两个grid之间拖拽实现 在ff上测试没有有关问题 在ie6上报this.el.dom为空或不是对象

2012-03-26 
ext 两个grid之间拖拽实现 在ff上测试没有问题 在ie6上报this.el.dom为空或不是对象//added user arrayva

ext 两个grid之间拖拽实现 在ff上测试没有问题 在ie6上报this.el.dom为空或不是对象
//added user array;
var newPickedUserId = [];

//delete store
var delPickedUserId = [];
//start useraddrole****************************
var unpickedPeopleGrid = new Ext.grid.GridPanel({
id : 'unpickedPeopleGrid',
ddGroup : 'unpickedPeopleGridDDGroup',
store : new Ext.data.Store({
  proxy: new Ext.data.HttpProxy({url:'loadunUserRole.action'}),
reader: new Ext.data.JsonReader({
totalProperty: 'totalProperty',
root: 'role'
}, [  
{name : 'id',mapping:'id',type : 'string'},
{name : 'uname',mapping:'uname',type : 'string'},
{name : 'fcd',mapping:'fcd',type : 'date',dateFormat : 'Y-m-dTH:i:s'},
{name : 'fcp',mapping:'fcp',type : 'string'}
])
}),
columns : [{
header : '编号',
dataIndex : 'id',
width : 40
},{
header : '权限名称',
dataIndex : 'uname'
},{
header : '创建人',
width:70,
dataIndex : 'fcp'
}, {
header : '创建时间',
dataIndex : 'fcd',
type : 'date',
width : 120,
renderer : Ext.util.Format.dateRenderer('Y-m-d H:i:s')
}],
enableDragDrop : true,
stripeRows : true,
width : 350,
region : 'west',
title : '未选择的角色',
viewConfig:{
forceFit:true
},
loadMask : {
msg : '数据加载中...'
}
});


  // user配置
  var pickedPeopleGrid = new Ext.grid.GridPanel({
id : 'pickedPeopleGrid',
ddGroup : 'pickedPeopleGridDDGroup',
store : new Ext.data.Store({
  proxy: new Ext.data.HttpProxy({url:'loadUserallRole.action'}),
reader: new Ext.data.JsonReader({
totalProperty: 'totalProperty',
root: 'role'
}, [  
{name : 'id',mapping:'id',type : 'string'},
{name : 'uname',mapping:'uname',type : 'string'},
{name : 'fcd',mapping:'fcd',type : 'date',dateFormat : 'Y-m-dTH:i:s'},
{name : 'fcp',mapping:'fcp',type : 'string'}
])
}),
columns : [ {
header : '编号',
dataIndex : 'id',
width : 40
},{
header : '权限名称',
dataIndex : 'uname'
},{
header : '创建人',
width:70,
dataIndex : 'fcp'
}, {
header : '创建时间',
dataIndex : 'fcd',
type : 'date',
width : 120,
renderer : Ext.util.Format.dateRenderer('Y-m-d H:i:s')
}],
enableDragDrop : true,
stripeRows : true,
width : 350,
region : 'center',
title : '已选择角色',
viewConfig:{
forceFit:true
},
loadMask : {
msg : '数据加载中...'
}
});

  var userConfigureWin = new Ext.Window({
id : 'userConfigureWin',
title : '用户授权',
closeAction : 'hide',
height : 400,
width : 700,
layout : 'border',
modal : true,
plain : true,
el : 'win_configroleuser',  
items : [pickedPeopleGrid, unpickedPeopleGrid],
buttons : [{
text : '提交',
handler : function() {
var selection = grid.getSelectionModel().getSelections();
var record = selection[0];



if(delPickedUserId.length == 0 && newPickedUserId.length == 0){
Ext.Msg.alert('提示','您的配置结果和初始值一致,无需提交');
return;
}  
Ext.Ajax.request({
url : 'updatePeopleRole.action',
method : 'post',
success : function(form, action) {
Ext.Msg.alert('提示','操作成功!');
Ext.getCmp('userConfigureWin').hide();
onRowDblClick();
pickedPeopleGrid.getStore().removeAll();
unpickedPeopleGrid.getStore().removeAll();
delPickedUserId.length = 0;
newPickedUserId.length = 0;
},
failure : function(form, action) {
Ext.Msg.alert('提示','操作失败!');
},
params : {
deleted : delPickedUserId,
added : newPickedUserId,
id: record.get("id")
}
});
}
},{
text:'复位',
handler:function(){
var selection = grid.getSelectionModel().getSelections();
var record = selection[0];

pickedPeopleGrid.getStore().removeAll();
unpickedPeopleGrid.getStore().removeAll();

pickedPeopleGrid.getStore().load({
params : {id : record.get('id')},
callback: function(r,options,success) {
if(!success){
Ext.Msg.alert('提示', '持有角色人员数据加载失败!');
Ext.getCmp('userConfigureWin').hide();
}
}
});

unpickedPeopleGrid.getStore().load({
params : {id : record.get('id')},
callback: function(r,options,success) {
if(!success){
Ext.Msg.alert('提示', '未持有角色人员数据加载失败!');
Ext.getCmp('userConfigureWin').hide();
}
}
});
Ext.getCmp('userConfigureWin').setTitle("配置<font color=green> “"+record.get('uname')+"” </font>角色用户");
delPickedUserId.length = 0;
newPickedUserId.length = 0;
}
}, {
text : '关闭',
handler : function() {
//Ext.Msg.alert('提示', 'addids:' + newPickedUserId.toString() + ', delids:' + delPickedUserId.toString());
Ext.getCmp('userConfigureWin').hide();
delPickedUserId.length = 0;
newPickedUserId.length = 0;
}
}]
});  
userConfigureWin.render();  
//end useraddrole****************************

var pickedUserGridDropTargetEl = pickedPeopleGrid.getView().el.dom.childNodes[0].childNodes[1];
var pickedUserGridDropTarget = new Ext.dd.DropTarget(
pickedUserGridDropTargetEl, {
ddGroup : 'unpickedPeopleGridDDGroup',
copy : true,
notifyDrop : function(ddSource, e, data) {
function addRow(record, index, allItems) {
pickedPeopleGrid.getStore().add(record);
ddSource.grid.store.remove(record);
var length = delPickedUserId.length;
delPickedUserId.remove(record.data.id);
if(length == delPickedUserId.length){
newPickedUserId.push(record.data.id);
}
}
// Loop through the selections
Ext.each(ddSource.dragData.selections, addRow);
return (true);
}
});

// This will make sure we only drop to the view container
var unpickedUserGridDropTargetEl = unpickedPeopleGrid.getView().el.dom.childNodes[0].childNodes[1];


var unpickedUserGridDropTarget = new Ext.dd.DropTarget(
unpickedUserGridDropTargetEl, {
ddGroup : 'pickedPeopleGridDDGroup',
copy : false,
notifyDrop : function(ddSource, e, data) {
function addRow(record, index, allItems) {
unpickedPeopleGrid.getStore().add(record);
ddSource.grid.store.remove(record);
var length = newPickedUserId.length;
newPickedUserId.remove(record.data.id);
if(length == newPickedUserId.length){
delPickedUserId.push(record.data.id);
}
 
}
Ext.each(ddSource.dragData.selections, addRow);
return (true);
}
});

[解决办法]
我问下在IE 下 你只是报这样的错误,但是不影响功能?

如果是这样的话,这个就是ext核心的错误!就是grid 在实行拖拽或在这之前这个节点已经是空的
 
要处理这样的问题 一般是要进行监听处理的 初始定义 方面解决IE这下错误 IE本身对js解析就有个缺陷 就是只

看当前 不看过程!
[解决办法]
你能不能这问题能描述具体点 其实如果是不显示 我也觉得这就是本身代码的兼容性问题!
你用的是什么来进行测试的 最好把它所指定的页面错误 能贴上来!
[解决办法]
你先把//end useraddrole**************************** 之后的代码删掉
直接先把window show出来 看看能渲染成功不 如果能 说明不是window的问题 再往下排查

热点排行