A. extjs4 嵌套页面刷新父页面grid问题
奇怪 你为什么 要用ifram 我们一般都是定义一个viewport 给出border 布局,
比如你这样的布局,我们一般就是在viewport 引用一个panel 或者form 来显示你的查询条件,region设置为north,再在viewport
引入一个grid region设置为center, 这样他们就在一个界面中了 不久好拿对象了 。。
你这种不觉得慢么?也是 现在的电脑机子配置都很好,我们项目客户那边的还奔腾的处理器呢,用iframe慢的很的
B. extjs4 grid怎么实现自动刷新
实现自动刷新grid思路
设定刷新grid的方法
function refreshGrid(){
...get params
grid.store.reload();
}
定时间隔多少时间去调用refreshGrid()
C. 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列
}
D. 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 - 在编辑之前的原始值。
E. 如何在extjs4中让一个gridpanel填充满它的父panel
加入fit布局就可以了layout : 'fit',
},{
title: '系统说明',
layout : 'fit',
contentEl : 'aboutDiv',
collapsible: true,
id : 'mainContent',
region:'center',//指定子面板回所在区域为答center
loader : {}
}]
F. ExtJS4 的grid,如何实现查询功能
弄个查询用户的信息的例子里,带分页的。通过调用servlet查询数据库返回用户的信息。web.xml配置了这个pageServlet。 这个的例子网上的有的是,你可以查一下呀。 首先在前台页面jsp里的javascript代码(部分) <script type="text/javascript" > //预加载 Ext.require( [ 'Ext.grid.*', 'Ext.toolbar.Paging', 'Ext.data.*' ] ); Ext.onReady( function(){ //创建Model Ext.define( 'User', { extend:'Ext.data.Model', fields:[ {name:'name',mapping:'name'}, {name:'sex',mapping:'sex'}, {name:'age',mapping:'age'} ] } ) //创建数据源 var store = Ext.create( 'Ext.data.Store', { model:'User', //设置分页大小 pageSize:5, proxy: { type: 'ajax', url : 'pageServlet', reader: { //数据格式为json type: 'json', root: 'bugs', //获取数据总数 totalProperty: 'totalCount' } }, autoLoad:true } ); //创建grid var grid = Ext.create('Ext.grid.Panel',{ store:store, columns:[ {text:'姓名',width:120,dataIndex:'name',sortable:true}, {text:'性别',width:120,dataIndex:'sex',sortable:true}, {text:'年龄',width:120,dataIndex:'age',sortable:true} ], height:200, width:480, x:20, y:40, title: 'ExtJS4 Grid分页查询示例示例', renderTo: 'grid', //分页功能 bbar: Ext.create('Ext.PagingToolbar', { store: store, displayInfo: true, displayMsg: '显示 {0} - {1} 条,共计 {2} 条', emptyMsg: "没有数据" } ) } ) store.loadPage(1); } ) </script> 下面pageServlet 代码。包自己引入public class pageServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; String start = request.getParameter("start"); String limit = request.getParameter("limit"); StringBuilder sb = null; //数据总数 int total = 0; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test", "root", "1234"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } //查询数据总数语句 String countSql = "select count(*) from users"; try { pstmt = con.prepareStatement(countSql); rs = pstmt.executeQuery(); while(rs.next()){ total = rs.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } //分页查询语句 String sql = "select * from users limit " + start + ", " + limit; try { pstmt = con.prepareStatement(sql); rs = pstmt.executeQuery(); sb = new StringBuilder(); //设置json数据格式 sb.append("{totalCount:"+total+",bugs:["); while (rs.next()) { sb.append("{"); sb.append("name:" + "\'" + rs.getString(1) + "\',"); sb.append("sex:" + "\'" + rs.getString(2) + "\',"); sb.append("age:" + "\'" + rs.getString(3) + "\'"); sb.append("},"); } } catch (SQLException e) { e.printStackTrace(); } try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } String json = sb.substring(0, sb.length() - 1); json += "]}"; System.out.println(json); response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); try { response.getWriter().write(json); response.getWriter().close(); } catch (IOException e) { e.printStackTrace(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
G. extjs4 怎么动态的修改grid的title
对创建的Grid使用setTitle()就可以了~
var grid = Ext.create('Ext.grid.Panel', { ... } );
grid.setTitle('你想修改的标题名称');
H. Extjs4怎么关闭GridPanel的遮罩层
希望能帮助到你来。
Extjs4的Ext.grid.Panel中有一个自viewConfig配置,Ext.view.Table中的所有配置选项对viewConfig都可用。Ext.view.Table中有一个loadMask配置控制在加载数据时是否显示掩层,类型可以是 Boolean/Object,而默认就是true,设置此项为false即可实现不加载掩层,因此你可以类似这样书写:
Ext.define('MyGrid',{
extend:'Ext.grid.Panel',
store:'Environments',
viewConfig:{
loadMask:false
}
});
你书写的代码:
count_grid.store.on('load',function()
{
loadMask.hide();
});
实际上是无效的,load事件在加载数据时发生,此时执行loadMask.hide没有效果;
可以在查看API,在beforeload里隐藏掩层,但是这样显得毫无意义。
I. EXTjs4的GridPanel的动态更新问题
//声明对应grid的内Record对象容
var ItemRecord = Ext.data.Record.create([
{name:'itemid'},
{name:'itemcode'},
{name:'itemname'},
{name:'price'},
{name:'mark'}
]);