导航:首页 > 编程语言 > extjs4mvcgrid

extjs4mvcgrid

发布时间:2024-04-05 14:59:02

① Extjs4 获取grid.panel中的被修改数据,该怎么处理

Ext.grid.EditorGridPanel afterEdit事件,就是每次编辑完一个列之后就提交到后台进行修改操作

传回的参数有
e.grid-grid本身。Thisgrid
e.record-正在编辑的record。Therecordbeingedited
e.field-正在编辑的字段名。Thefieldnamebeingedited
e.value-正在设置的值(value)。Thevaluebeingset
e.originalValue-在编辑之前的原始值。Theoriginalvalueforthefield,beforetheedit.
e.row-grid行索引。Thegridrowindex
e.column-grid行索引。Thegridcolumnindex
listeners:{
afterEdit:function(e){
e.record正在编辑的record。

}

e.field - 正在编辑的字段名

e.value - 正在设置的值(value)。

e.originalValue - 在编辑之前的原始值。

② Extjs 4.0 怎样对grid的store多层分组,就是groupField不只是一个,store中数据是多层关系,高手求教,急

  1. store中加入属性groupField: '要分组的字段专',

  2. 添加groupingFeature:

    vargroupingFeature=Ext.create('Ext.grid.feature.Grouping',{
    groupHeaderTpl:'要分组的字段: {name} '

    });

  3. 在属Ext.grid.panel中加入features属性

    features:[groupingFeature],

③ Extjs中如何遍历grid的数据(正在显示的数据)

“也就是说显示在grid的中的数据并不一定是store的数据”这句话是错误的!
你用store加载的数据,是经过Record解析的,也就是说,store装的就是record解析完的数组,而数组里的对象就是你record解析的对象。而你所说的,只是通过renderer方法,把store中的数据renderer后展现在grid上,而这个renderer是属于ColumnModel的,它只是用来做grid上的显示,而真正记录的数据只有sotre!
解决这个有两种方式:
1.你sotre加载数据之前,把该对象数组重新组织,组织成你真正想要的数据后再load!
2.遍历store的record记录,在遍历到你经过处理的dataIndex时,在按你的处理方式处理遍数据即可!
for(var i=0,len=store.data.length;i<len;i++){
var data = store.getAt(i).data;//data就是对应record的一个一个的对象
data.dataIndex //获取的就是该对象dataIndex属性对应的值
.........
}

这两种说白了就是你真实想要什么记录的对象,要么在sotre之前组织,要么在遍历之后组织!总之store所load的数据会一直被store持有着,你不remove也不reload,他就不会变!

④ extjs4.0 grid 选择全选修改完数据刷新Grid列表后,全选按钮还是勾中状态,怎么去除

var hd_checker = Ext.getCmp("#your grid id").getEl().select('div.x-column-header-checkbox');
var hd = hd_checker.first();
//清空表格头的checkBox
if(hd.hasCls('x-grid-hd-checker-on')){
hd.removeCls('x-grid-hd-checker-on');
}

该方法仅限于4.1
4.0的话应该也可以用,但要去查下那个Column Header Checkbox是不是使用的x-grid-hd-checker-on这个Cls

⑤ extjs如何获取Grid中某一行某一列的值

Ext.grid.GridView.getCell( Number row, Number col ):取得指定单元格对应的td元素

例如:

varsStr=Ext.grid.GridView.getCell(0,0);


再给你一些常用的方法、属性

1、Ext.grid.GridPanel

主要配置项:

store:表格的数据集

columns:表格列模式的配置数组,可自动创建ColumnModel列模式

autoExpandColumn:自动充满表格未用空间的列,参数为列id,该id不能为0

stripeRows:表格是否隔行换色,默认为false

cm、colModel:表格的列模式,渲染表格时必须设置该配置项

sm、selModel:表格的选择模式,默认为Ext.grid.RowSelectionModel

enableHdMenu:是否显示表头的上下文菜单,默认为true

enableColumnHide:是否允许通过标题中的上下文菜单隐藏列,默认为true

loadMask:是否在加载数据时显示遮罩效果,默认为false

view:表格视图,默认为Ext.grid.GridView

viewConfig:表格视图的配置对象

autoExpandMax:自动扩充列的最大宽度,默认为1000

autoExpandMin:自动扩充列的最小宽度,默认为50

columnLines:是否显示列分割线,默认为false

disableSelection:是否禁止行选择,默认为false

enableColumnMove:是否允许拖放列,默认为true

enableColumnResize:是否允许改变列宽,默认为true

hideHeaders:是否隐藏表头,默认为false

maxHeight:最大高度

minColumnWidth:最小列宽,默认为25

trackMouseOver:是否高亮显示鼠标所在的行,默认为true

主要方法:

getColumnModel():取得列模式

getSelectionModel():取得选择模式

getStore():取得数据集

getView():取得视图对象

reconfigure( Ext.data.Store store, Ext.grid.ColumnModel colModel ):使用一个新的数据集和列模式重新配置表格组件



2、Ext.grid.Column

主要配置项:

id:列id

header:表头文字

dataIndex:设置列与数据集中数据记录的对应关系,值为数据记录中的字段名称。如果没有设置该项则使用列索引与数据记录中字段的索引进行对应

width:列宽

align:列数据的对齐方式

hidden:是否隐藏列,默认为false

fixed:是否固定列宽,默认为false

menuDisabled:是否禁用列的上下文菜单,默认为false

resizable:是否允许改变列宽,默认为true

sortable:是否允许排序,默认为true

renderer:设置列的自定义单元格渲染函数

传入函数的参数有:

value:数据的原始值

metadata:元数据对象,用于设置单元格的样式和属性,该对象包含的属性有:

css:应用到单元格TD元素上的样式名称

attr:一个HTML属性定义字符串,例如'style="color:blue"'

record:当前数据记录对象

rowIndex:单元格的行索引

colIndex:单元格的列索引

store:数据集对象

xtype:列渲染器类型,默认为gridcolumn,其它可选值有booleancolumn、numbercolumn、datecolumn、 templatecolumn等

editable:是否可编辑,默认为true

editor:编辑器

groupName:

emptyGroupText:

groupable:



3、Ext.grid.ColumnModel

主要配置项:

columns:字段数组

defaultSortable:是否进行默认排序,默认为false

defaultWidth:默认宽度

主要方法:

findColumnIndex( String col ):根据给定的dataIndex查找列索引

getColumnById( String id ):取得指定id对应的列

getColumnCount( Boolean visibleOnly ):取得列总数

getColumnHeader( Number col ):取得列的表头

getColumnId( Number index ):取得列id

getDataIndex( Number col ):取得列对应的数据字段名

getIndexById( String id ):取得列索引

getTotalWidth( Boolean includeHidden )

isCellEditable( Number colIndex, Number rowIndex )

isFixed()

isHidden( Number colIndex )

setColumnHeader( Number col, String header )

setColumnWidth( Number col, Number width, Boolean suppressEvent )

setDataIndex( Number col, String dataIndex )

setEditable( Number col, Boolean editable )

setEditor( Number col, Object editor )

setHidden( Number colIndex, Boolean hidden )

setRenderer( Number col, Function fn )



4、Ext.grid.AbstractSelectionModel

主要方法:

lock():锁定选择区域

unlock():解锁选择区域

isLocked():当前选择区域是否被锁定



5、Ext.grid.CellSelectionModel

主要方法:

clearSelections( Boolean preventNotify ):清除选择区域

getSelectedCell():取得当前选择的单元格,返回一数组,其格式:[rowIndex, colIndex]

hasSelection():当前是否有选择区域

select( Number rowIndex, Number colIndex, [Boolean preventViewNotify], [Boolean preventFocus], [Ext.data.Record r] ):选择指定单元格



6、Ext.grid.RowSelectionModel

主要配置项:

singleSelect:是否单选模式,默认为false,即可以选择多条数据

主要方法:

clearSelections( [Boolean fast] ):清除所有选择区域

deselectRange( Number startRow, Number endRow ):取消范围内的行选择

deselectRow( Number row, [Boolean preventViewNotify] ):取消指定行的选择状态

each( Function fn, [Object scope] ):遍历所有选择行,并调用指定函数。当前被选行将传入该函数中

getCount():得到选择的总行数

getSelected():得到第一个被选记录

getSelections():得到所有被选记录的数组

hasNext():判断当前被选行之后是否还有记录可以选择

hasPrevious():判断当前被选行之前是否还有记录可以选择

hasSelection():是否已选择了数据

isIdSelected( String id ):判断指定id的记录是否被选择

isSelected( Number/Record index ):判断指定记录或记录索引的数据是否被选择

selectAll():选择所有行

selectFirstRow():选择第一行

selectLastRow( [Boolean keepExisting] ):选择最后行

keepExisting:是否保持已有的选择

selectNext( [Boolean keepExisting] ):选择当前选择行的下一行

selectPrevious( [Boolean keepExisting] ):选择当前选择行的上一行

selectRange( Number startRow, Number endRow, [Boolean keepExisting] ):选择范围内的所有行

selectRecords( Array records, [Boolean keepExisting] ):选择一组指定记录

selectRow( Number row, [Boolean keepExisting], [Boolean preventViewNotify] ):选择一行

row:行索引

selectRows( Array rows, [Boolean keepExisting] ):选择多行

rows:行索引数组



7、Ext.grid.CheckboxSelectionModel

主要配置项:

singleSelect:是否单选模式,默认为false,即可以选择多条数据

checkOnly:是否只能通过点击checkbox列进行选择,默认为false

sortable:是否允许checkbox列排序,默认为false

width:checkbox列的宽度,默认为20



8、Ext.grid.RowNumberer

主要配置项:

header:行号列表头显示的内容

width:列宽,默认为23



9、Ext.grid.GridView

主要配置项:

enableRowBody:是否包含行体

sortAscText:表格标题菜单中升序的文字描述

sortDescText:表格标题菜单中降序的文字描述

columnsText:表格标题菜单中列对应的文字描述

autoFill:是否自动扩展列以充满整个表格,默认为false

forceFit:是否强制调整表格列宽以适用表格的整体宽度,防止出现水平滚动条,默认为false

主要方法:

focusCell( Number row, Number col ):将焦点移到指定单元格

focusRow( Number row ):将焦点移动指定行

getCell( Number row, Number col ):取得指定单元格对应的td元素

getHeaderCell( Number index ):取得指定表头对应的td元素

getRow( Number index ):取得指定行对应的tr元素

getRowClass( Record record, Number index, Object rowParams, Store store ):得到附加到表格行上的样式名

record:当前行的数据记录对象

index:当前行的索引

rowParams:渲染时传入到行模板中的配置对象,通过它可以为行体定制样式,该对象只在enableRowBody为true时才生效,可能的属性 如下:

body:渲染到行体中的HTML代码片段

bodyStyle:应用到行体tr元素style属性的字符串

cols:应用到行体td元素colspan属性的值,默认为总列数

store:表格数据集

refresh( [Boolean headersToo] ):刷新表格组件

scrollToTop():滚动表格到顶端


实战

1:让gridpanel的滚动条自动滚动到最后一条记录(动态插入数据):

grid.getView().focusRow(vehiclePassInfoGrid.getStore().getCount()-1);


2:清除gridpanel中有行被选择的状态:

grid.getSelectionModel().clearSelections();

⑥ Extjs 4.x 为GridPanel动态添加一行数据

//声明对应grid的Record对象
var ItemRecord = Ext.data.Record.create([
{name:'itemid'},
{name:'itemcode'},
{name:'itemname'},
{name:'price'},
{name:'mark'}
]);
//点新增按钮时则执行类似如下函数

function addNewLine2Grid(grid){
var rec = new ItemRecord({ //实例化Record对象,并赋予各字段初始值
'itemid': 0,
'itemcode': '',
'itemname': '',
'price': 0.00,
'mark': ''
});
grid.store.insert(grid.store.getCount(), rec); //插入新行作为grid最后一行
grid.getView().refresh(); //刷新
//grid.plugins[1].startEditing(grid.store.getCount()-1,4); //编辑最后一行第4列
}

⑦ extjs4.0 mvc模式开发,请问grid某一列的blur事件在控制器要怎么监听

请参照extjs的api http://dev.sencha.com/deploy/ext-4.0.7-gpl/docs/index.html#!/api/Ext.grid.Panel


它并没有提供列的blur事件,所以是没法监听的。

⑧ ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox

由于某种原因,需要做一个控制grid列显示的checkboxgroup,虽然EXTJS4中的gridpanel自带列表可以来控制列的显示隐藏,但是有这样的需求(需要一目了然)
下面先上图

接着前几天做的工作,今天上午完成了定制字段,思路是在上面的普通查询或者高级查询结束以后,获得了列的fields,columns等信息,然后交给一个处理函数
makeCustomMadePanel,该函数用来生成checkboxgroup,生成的时候给它加上一个事件,原本以为checkbox会有类似于check的事件,结果API看了看貌似只有个change事件可以用,MD。。
下面贴下自己写的
makeCustomMadePanel函数。。用来根据grid的列自动生成checkboxgroup(整个grid的标头内容等信息均从后台得到,不管后台发来一个什么表,都能生成一个checkboxgroup来控制列的隐藏显示)
参数分别是gridpanel在reconfigure的时候用到的fields和columns,期中的var
t=grid_a.columnManager.headerCt.items.get(th.itemId);是关键。。这句用来获得grid_a的列信息。。貌似在api中查不到。网上找了几中方法都不适合。又不想给每个列一个ID。这是在stackoverflow.com/上找到的。。http://stackoverflow.com/questions/20791685/extjs-4-how-do-i-hide-show-grid-columns-on-the-fly
复制代码
代码如下:
function
makeCustomMadePanel(fields,cl)
{
var
x=cusMadePanel.getComponent('custom');
//console.log(cusMadePanel.getComponent('custom'));
for(var
i=0;i<fields.length;i++)
{
x.add(
{
xtype
:
'checkboxfield',
boxLabel
:
cl[i].header,
inputValue
:
fields[i].name,
checked:true,
itemId:i,
name
:
'custom',
listeners
:
{
change
:
function(th,
value,
oldValue,eop)
{
var
t=grid_a.columnManager.headerCt.items.get(th.itemId);
if(t.isVisible()){
t.setVisible(false);
}
else{
t.setVisible(true);
}
//grid_a.columns[3].setVisible(false);
}}
}
);
}
}
在给出customMadePanel
复制代码
代码如下:
Ext.define('customMadePanel',
{
extend
:
'Ext.form.Panel',
title
:
'定制字段',
collapsible
:
true,
items
:
[
{
itemId:'custom',
xtype
:
'checkboxgroup',
fieldLabel
:
'选择字段',
columns
:
6,
items
:
[]
}]
//collapsed:true,
});
var
cusMadePanel=new
customMadePanel();
我这种做法的不足也很明显,makeCustomMadePanel函数中的循环生成checkbox组件太耗时了,38个组件足足花了好几秒。。用户体验肯定不好。。
并且目前是在每次查询完之后都根据查询的结果生成一遍。。。我再想想好的解决办法
今天对makeCustomMadePanel做了优化,生成组件的速度与先前相比提升非常明显!
复制代码
代码如下:
function
makeCustomMadePanel(fields,cl)
cusMade=1;
var
x=cusMadePanel.getComponent('custom');
//console.log(cusMadePanel.getComponent('custom'));
var
fie=[];
for(var
i=0;i<fields.length;i++)
{
//x.add(
var
temp=
{
xtype
:
'checkboxfield',
boxLabel
:
cl[i].header,
//inputValue
:
fields[i].name,
checked:true,
itemId:i,
name
:
'custom',
listeners
:
{
change
:
function(th,
value,
oldValue,eop)
{
var
t=grid_a.columnManager.headerCt.items.get(th.itemId);
//console.log(t.isVisible());
//console.log('break');
if(t.isVisible()){
t.setVisible(false);
}
else{
t.setVisible(true);
}
//console.log(t.isVisible());
//var
t1=grid_a.columnManager.headerCt.items.get(th.itemId);
//console.log(t1);
//grid_a.columns[3].setVisible(false);
}}
};
//console.log(temp);
fie.push(temp);
}
//console.log(fie);
x.add(fie);
思路就是先循环组好需要生成的组件对象,然后一次add,每一次add的开销非常大,变为一次速度真的提升了很多很多~

⑨ 如何在extjs4中让一个gridpanel填充满它的父panel

加入fit布局就可以了layout : 'fit',

},{
title: '系统说明',
layout : 'fit',
contentEl : 'aboutDiv',
collapsible: true,
id : 'mainContent',
region:'center',//指定子面板回所在区域为答center
loader : {}
}]

阅读全文

与extjs4mvcgrid相关的资料

热点内容
mindmaplinux 浏览:733
oppo手机怎么连接电脑传输数据 浏览:624
word删除尾注分隔符 浏览:773
公告质疑需要哪些文件 浏览:608
数据库模型是干什么的 浏览:404
win10的驱动怎么安装驱动 浏览:320
word文件水印怎么取消 浏览:443
rhel6的镜像文件在哪里下载 浏览:571
成功正能量微信头像 浏览:848
wps表格如何恢复数据 浏览:264
linuxc静态库创建 浏览:838
u盘有微信文件但微信恢复不了 浏览:585
苹果的网站数据是什么 浏览:22
ps滚字教程 浏览:237
win7网络邻居如何保存ftp 浏览:186
安卓客户端代理服务器 浏览:572
编程用苹果 浏览:659
51虚拟机的文件管理在哪里 浏览:13
win10系统有没有便签 浏览:722
java引用传递和值传递 浏览:109

友情链接