A. extjs 表格如何实现动态添加列
Ext.onReady(function(){
varsm=newExt.grid.CheckboxSelectionModel();
varcm=[newExt.grid.RowNumberer(),sm,
{header:"编号",dataIndex:"id",width:65,hidden:true},
{header:"名称",dataIndex:"name",width:65},
{header:"路径",dataIndex:"url",width:65}
]
varfd=["id","name","url"];
varstore=newExt.data.JsonStore({
fields:fd
})
vardata=[{
id:1,name:"xiao",url:"sssssssssss",sex:"male"
}]
vargrid=newExt.grid.GridPanel({
sm:sm,
columns:cm,
store:store,
width:500,
height:400,
tbar:[{
text:"生成",
icon:"images/icons/add.png",
cls:"x-btn-text-icon",
handler:function(){
varres={fields:[{name:"sex"}],columns:[{header:'性别',dataIndex:"sex",width:65}]};
varcolumns=res.columns;
varfields=res.fields;
for(vari=0;i<fields.length;i++){
fd.push(fields[i].name);
cm.push(columns[i]);
}
//重新绑定store及column
ss=newExt.data.JsonStore({
fields:fd
});
grid.reconfigure(ss,newExt.grid.ColumnModel(cm));
ss.loadData(data)
}
}]})varwin=newExt.Window({
title:"sssssss",
width:700,
height:500,
layout:"fit",
closable:true,
items:[grid]
})
win.show();
});
主要是grid里的reconfigure这个方法:配置grid以使用一个不同的Store和Column Model并触发'reconfigure'事件。 视图将会被绑定到新的对象并刷新。
你自己引用ext3的类库吧~
B. extjs创建grid表格,怎样实现双击表格里某一行数据,跳转到另一个panel页面
listeners : {
dblclick : {
element : 'body',
fn : function() {
var _record = sm.getSelection();
scount = _record.length;
if (scount == 0) {//未选择
Ext.Msg.alert('友情提示', '请选择...!');
return false;
}
addTab(false);
}
}
},
-------------------
functionaddTab(closable){
++index;
tabs.add({
title:'NewTab'+index,
iconCls:'tabs',
html:'TabBody'+index+'<br/><br/>'+Ext.example.bogusMarkup,
closable:!!closable
}).show();
}
C. ExtJS GridPanel 点击行选中事件 有两个gridPanel 选中前面表格的一行第二个表格的数据会根据选中值变化
大概思路是这样的:内
var grid2 = new Ext.grid.GridPanel({
store: store2
});
var grid1 = new Ext.grid.GridPanel({
store: store1,
listeners: {
'rowclick': function(grid, rowIndex, e) {
store2.baseParams.xxxid= grid.getSelectionModel().getSelected().data['xxxid'];
store2.load({
容 params: {
.....
}
});
}
}
});
D. extjs 如何实现定义的grid的第一列2列可以带那种伸开和收缩的
---------------------解决方复案------------------------------
extjs ajax
---------------------解决方案------------------------------
gridpanel增加制id,使用
var store=Ext.getCmp('grid的id').getStore()得到数据源,然后你要怎么操作都行了
store.getAt(0).get('your field name')
E. ExtJs4的表格双击事件 怎么实现
function rowclickFn(grid, rowindex, e){
grid.getSelectionModel().each(function(rec){
alert(rec.get(fieldName)); //fieldName,记录中的字段名
});
}
var grid = new Ext.grid.GridPanel({
store: <your datastore>,
columns:[<your columns>],
renderTo:'example-grid',
height:200,
listeners:{
//单击
rowdblclick : function(grid,row){
alert("rowdblclick")
F. extjs的grid列宽调整问题
简单点:在column中加上
,
renderer: function (value, meta, record) {
meta.style = 'overflow:visible;white-space:normal;';
return value;
}
可以自动换行,如果要加版Tip
前面加上:
Ext.tip.QuickTipManager.init();
column中加权上:
renderer: function (value, meta, record) {
meta.tdAttr = 'data-qtip="' + value + '"';
return value;
}
G. 关于ExtJS的grid store加载的问题,grid改变列之后,用grid.reconfigure追加列,只加载新追加列的数据
一个grid只能对应一个store。
用grid.reconfigure的话,也是把之前的store换成现在的store
grid刷新数据的话,是刷整个store,不专会单刷某一列
如果属使用grid.reconfigure换掉store,那么是需要重新更新store的数据的
而你想保留原有的,只是把新加的列的数据刷出来,其实可以这样
1.把store里record中的数组定义出去
2.把columnmodel里的数组也定义出去
3.先用以上两个数组,建立record、store、column、grid等等,然后读数据,为第一次的grid数据
4.这时需要追加列,只需要将刚才的两个数组继续追加,然后再建立新的record、store、column然后用grid.reconfigure更新grid,这时在更新数据,其数据就会跟第一次的一样且多了新加的列的数据(当然前提是你后台传的数据里也同样多了该列所对应的数据信息)
H. extjs 如何把两个store数据放在同一个gridpanel里
Ext.getCmp('tasklist_grid').reconfigure(taskStore);
reconfigure 参数放入要重新绑定的store 就可以。此时store中的fields 匹配grid columns中的 dataIndex ,才正回常显答示。