不允许使用ExtJS将列拖动到特定位置
Disallow column dragging to certain positions with ExtJS
我的网格上有5列,我想禁止用户将中间列右侧的列拖到左侧,同样也不允许将左侧的列拖向右。
我的小提琴:https://fiddle.sencha.com/#fiddle/10ei
我有一个名为No Crossing Zone的列,如何禁止将id
和name
拖到No Crossing Zone
的右侧,并禁用Group 1
和Group 2
拖到No Crossing Zone
的左侧?
如果需要,我可以向数据集添加任何新的键:值对。
使用此代码,如果No Crossing Zone
的列向左移动,它的列右将向后移动。反之亦然:
第一个解决方案:
Ext.application({
name: 'Fiddle',
launch: function() {
Ext.create('Ext.grid.Panel', {
columns: [
{
text: 'Id'
},
{
text: 'Name'
},
{
text: 'No Crossing Zone',
draggable: false
},
{
text: 'Group 1',
},
{
text: 'Group 2',
}],
listeners:{
columnmove: function (ct, column, fromIdx, toIdx, eOpts) {
var noCrossCol = undefined,
crossCol = undefined,
i = 0;
Ext.each(ct.getGridColumns(), function(col) { // There may be a better way to get "crossColIdx" and "crossCol"...
if(col.text == 'No Crossing Zone') {
crossColIdx = i;
crossCol = col;
return false;
}
i++;
});
console.log("fromIdx: " + fromIdx + "; toIdx: " + toIdx);
if((fromIdx <= crossColIdx) && (toIdx > crossColIdx)) {
console.log("moved too far");
ct.moveBefore(column, crossCol);
}
if((fromIdx >= crossColIdx) && (toIdx < crossColIdx)) {
console.log("moved too near");
ct.moveAfter(column, crossCol);
}
}
},
renderTo: Ext.getBody()
})
}
});
第二种解决方案:
Ext.application({
name: 'Fiddle',
launch: function() {
Ext.create('Ext.grid.Panel', {
columns: [{
text: 'left part',
sealed: true,
columns: [{
text: 'Id'
}, {
text: 'Name',
sealed: true,
columns: [{
text: 'Sub 1'
}, {
text: 'Sub 2'
}]
}]
}, {
text: 'No Crossing Zone',
draggable: false
}, {
text: 'right part',
sealed: true,
columns: [{
text: 'Group 1',
sealed: true,
columns: [{
text: 'Sub 1'
}, {
text: 'Sub 2'
}]
}, {
text: 'Group 2',
sealed: true,
columns: [{
text: 'Sub 1'
}, {
text: 'Sub 2'
}]
}]
}],
flex: 1,
renderTo: Ext.getBody()
})
}
});
您甚至可以删除No Crossing Zone
列
(在评论中请求后编辑)
相关文章:
- 在地图加载/页面加载时,我想将地图设置为当前地理位置,但不想在地图上显示定位图标
- JQuery定位:我可以滚动到正确的位置一次,但不能滚动两次
- 如何在jquerymobile中同时放置两个定位的经纬度位置
- Javascript / 根据一个元素的位置定位另一个元素
- 如何定位“隐藏”的 iframe?(应用程序:链接到嵌入“隐藏的海报图像”嵌入的 Youtube 视频的起始位置)
- 与位置的相对定位:绝对
- 在没有“位置”属性的情况下实现绝对定位,使用边距/填充
- 用于相对于用户在约束内单击的位置定位框的数学公式
- 运行地理位置定位的 js 文件
- 如果定位服务关闭,英特尔 XDK 地理位置将找不到纬度/经度
- 在 iPad 上绝对定位不会将元素设置在所需位置
- 如何使用 jQuery 计算相对定位元素的绝对位置*没有*
- 如果php返回位置头,我如何在jquery ajax中定位页面
- 试着根据父母的位置来定位孩子
- 地理定位api没有给出准确的用户位置
- 定位父元素,使子元素处于完全相同的位置
- 如何在Javascript/Mootools中根据页面上不同对象的位置定位箭头
- 使用javascript查找元素相对于最近相对定位的父元素的位置
- 多个谷歌位置请求功能(药房定位器)
- 点击html5地理定位当前位置,然后减去两点