投放本站广告请联系:
extjscn#126.com
ExtJS 常用代码片段
笔者工作中用到的功能,以及一些小功能,贴出来跟大家分享。
1、grid加载时候选择一行或全选:
为stroe添加load事件,调用sm的selectAll方法
store.on("load",function(store) {sm.selectAll();});
选择一行或多行和以调用selectRow、selectRows或selectRecords等方法,在api中有详细介绍。
2、Extjs 中调用Ajax
Ext.Ajax.request({ url:'xxx.action', method:'post', params:{equipmentId: equipmentId,agentIds: agentIds}, success:function(response,config){ var json = Ext.util.JSON.decode(response.responseText); Ext.Msg.alert("提示信息",json.msg); store.reload(); }, failure:function(){ Ext.MessageBox.alert("提示信息", "关联失败"); store.reload(); } });
3、form中的下拉框
var tankType = new Ext.form.ComboBox({ typeAhead: true, triggerAction: 'all', lazyRender:true, mode: 'remote', applyTo :'tankType', id:'tankType', disabled:true, msgTarget : 'side', width:135, editable:false, store: new Ext.data.Store({ //下拉框的数据源 proxy: new Ext.data.HttpProxy({url:'${ctx}/tankfarm/getTankTypes.action'}), reader: new Ext.data.JsonReader({},[ {name:'type_code'}, {name:'type_name'} ]) }), valueField: 'type_code',//值字段 displayField: 'type_name'//显示的字段 });
4、form中的单选框
{ xtype: 'radiogroup', layout: 'table', width: 100, id: 'is_main_line', fieldLabel: '主侧线', defaultType: 'radio', border: false, sFormField: true, items: [{ name: 'is_main_line', //这里加入name表示两个radio属于同一个组,形成单选模式,如果不加name或者两个name不一样,则会发生两个都会选择的情况 boxLabel: '是', xtype: 'radio', inputValue: '1',//单选框的实际值 checked: true }, { name: 'is_main_line', boxLabel: '否', xtype: 'radio', inputValue: '2' } ] }
5、editgrid获取修改后的数据:
//得到修改过的Recored的集合 var modified = tankDataStore.modified.slice(0); //将数据放到另外一个数组中 var jsonArray = []; Ext.each(modified,function(m){ //m.data中保存的是当前Recored的所有字段的值json,不包含结构信息 jsonArray.push(m.data); }); 6、grid添加单元格悬浮显示内容,方法为在cm中header添加renderer事件,将value完整显示,代码如下: {header:'名称',width:50,dataIndex:'name',menuDisabled:true,menuDisabled:true,renderer : function(value, metadata, record, rowIndex, columnIndex,store) { value = value.replace(/</g,'<'); metadata.attr = 'ext:qtip="' + value + '<br/>"'; return value; } }
7、分页工具栏
new Ext.PagingToolbar({ pageSize: 25 store: store, id:'pagger', displayInfo: true, displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条', emptyMsg: "当前查询条件无数据,请重新查询" })
8、树节点右键菜单
//首先建立菜单Menu,代码如下: var materialMenu = new Ext.menu.Menu({ items : [ {text : "增加", id : 'add', handler : function() {} }, { text : "修改", id : 'update', handler : function() {} }, {text : "删除", id : 'delete', handler : function() {} }] }); //然后为树添加监听器: listeners : { 'contextmenu' : function(node, event) { materialMenu.showAt(event.getPoint()); } }
这样在树节点上右击就可以弹出菜单了,不过为了不和ie右键冲突,最好是禁用了ie的右键菜单,具体怎么禁用就不详细说明了。
9、grid单元格添加图片和超链接
第一种方法是使用Ext.grid.column.Action 动作列详细可见我的另一篇文章中有介绍
http://www.cnblogs.com/lslvxy/archive/2013/05/26/3099768.html
第二中方法是使用简单的列,并添加renderer函数,在renderer中可以返回一个html标签,类似
return "下载文档",这样表格中就可以显示一个超链接或者按钮等组件。
然后给grid添加单元格点击cellClick事件,
function cellClick(grid, rowIdx, colIdx, e) { var value= e.getTarget().value;//获取renderer中返回的标签值 //e.getTarget().innerHTML 获取renderer中返回的标签内的文本 record = grid.getStore().getAt(rowIdx); row = grid.getSelectionModel().getSelected(); //得到选择所有行 var fieldName = grid.getColumnModel().getDataIndex(colIdx); // 获取列名 var data = record.get(fieldName);//这个data就是点击的单元格的数据了,一定有用的 }
10、grid隔行变色(6.21添加)
先自定义一个CSS:
<style type="text/css"> .my_row_Red table{ background:Red} .my_row_Green table{ background:Green} </style>
然后在GridPanel里这样写:
viewConfig : { getRowClass : function(record,rowIndex,rowParams,store){ if(rowIndex%2==0){ return 'my_row_Red'; }else{ return 'my_row_Blue'; } } }
这样就可以使得表格隔行变色了,在加载的时候就显示不同的颜色了。
--先记录这么多,日后工作再逐渐添加--
宝剑锋从磨砺出,梅花香自苦寒来。
作者: 依山慕雪
原文: http://www.cnblogs.com/lslvxy/archive/2013/06/14/3135366.html
- 关键字:
- 要发表评论,请先登录