『壹』 extjs grid 列头分行
/**
* 表格综合示例
*
* @author XiongChun
* @since 2010-10-20
*/
Ext.onReady(function() {
group1 = [{}, {
header : '分组1-1a',
colspan : 4,
align : 'center'
}, {}, {
header : '分组1-3',
colspan : 5,
align : 'center'
}];
var group2 = [{}, {
header : '分组2-1',
colspan : 2,
align : 'center'
}, {
header : '分组2-2',
colspan : 2,
align : 'center'
}, {
header : '单位',
rowmerge:true,
domid:'group_dw',
align : 'center'
}, {
header : '分组2-3',
colspan : 2,
align : 'center'
}, {
header : '分组2-4',
colspan : 3,
align : 'center'
}];
/*
var group = new Ext.ux.grid.ColumnHeaderGroup({
rows : [group1, group2]
});
*/
var group = new Ext.ux.plugins.GroupHeaderGrid({
rows : [group1, group2]
});
// 定义自动当前页行号
var rownum = new Ext.grid.RowNumberer({
header : 'NO',
width : 28
});
// 复选框
var sm = new Ext.grid.CheckboxSelectionModel();
// 定义列模型
var cm = new Ext.grid.ColumnModel([rownum, {
header : '项目ID', // 列标题
dataIndex : 'xmid', // 数据索引:和Store模型对应
sortable : true
// 是否可排序
}, {
header : '项目名称',
dataIndex : 'xmmc',
sortable : true,
width : 200
}, {
header : '项目热键',
dataIndex : 'xmrj'
}, {
header : '规格',
dataIndex : 'gg'
}, {
dataIndex : 'dw',
align:'center',
fixed:true,
width : 60
}, {
header : '启用状态',
dataIndex : 'qybz',
// 演示render的用法(代码转换,该render由<G4Studio:ext.codeRender/>标签生成)
renderer : QYBZRender,
width : 60
}, {
header : '剂型',
dataIndex : 'jx',
width : 60
}, {
header : '产地',
dataIndex : 'cd',
width : 200
}, {
header : '医院编码',
dataIndex : 'yybm'
}, {
header : '更改时间',
dataIndex : 'ggsj'
}]);
/**
* 数据存储
*/
var store = new Ext.data.Store({
// 获取数据的方式
proxy : new Ext.data.HttpProxy({
url : 'gridDemo.do?reqCode=querySfxmDatas'
}),
// 数据读取器
reader : new Ext.data.JsonReader({
totalProperty : 'TOTALCOUNT', // 记录总数
root : 'ROOT' // Json中的列表数据根节点
}, [{
name : 'xmid' // Json中的属性Key值
}, {
name : 'sfdlbm'
}, {
name : 'xmmc'
}, {
name : 'xmrj'
}, {
name : 'gg'
}, {
name : 'dw'
}, {
name : 'qybz'
}, {
name : 'jx'
}, {
name : 'cd'
}, {
name : 'yybm'
}, {
name : 'ggsj'
}])
});
/**
* 翻页排序时候的参数传递
*/
// 翻页排序时带上查询条件
store.on('beforeload', function() {
this.baseParams = {
xmmc : Ext.getCmp('xmmc').getValue()
};
});
// 每页显示条数下拉选择框
var pagesize_combo = new Ext.form.ComboBox({
name : 'pagesize',
triggerAction : 'all',
mode : 'local',
store : new Ext.data.ArrayStore({
fields : ['value', 'text'],
data : [[10, '10条/页'], [20, '20条/页'],
[50, '50条/页'], [100, '100条/页'],
[250, '250条/页'], [500, '500条/页']]
}),
valueField : 'value',
displayField : 'text',
value : '20',
editable : false,
width : 85
});
var number = parseInt(pagesize_combo.getValue());
// 改变每页显示条数reload数据
pagesize_combo.on("select", function(comboBox) {
bbar.pageSize = parseInt(comboBox.getValue());
number = parseInt(comboBox.getValue());
store.reload({
params : {
start : 0,
limit : bbar.pageSize
}
});
});
// 分页工具栏
var bbar = new Ext.PagingToolbar({
pageSize : number,
store : store,
displayInfo : true,
displayMsg : '显示{0}条到{1}条,共{2}条',
plugins : new Ext.ux.ProgressBarPager(), // 分页进度条
emptyMsg : "没有符合条件的记录",
items : ['-', ' ', pagesize_combo]
});
// 表格工具栏
var tbar = new Ext.Toolbar({
items : [{
xtype : 'textfield',
id : 'xmmc',
name : 'xmmc',
emptyText : '请输入项目名称',
width : 150,
enableKeyEvents : true,
// 响应回车键
listeners : {
specialkey : function(field, e) {
if (e.getKey() == Ext.EventObject.ENTER) {
queryCatalogItem();
}
}
}
}, {
text : '查询',
iconCls : 'page_findIcon',
handler : function() {
queryCatalogItem();
}
}, {
text : '刷新',
iconCls : 'page_refreshIcon',
handler : function() {
store.reload();
}
},'->' ,{
text : '重设列标题',
iconCls : 'acceptIcon',
handler : function() {
cm.setColumnHeader('2','开天辟地');
}
}, {
text : '重设分组列标题',
iconCls : 'acceptIcon',
handler : function() {
Ext.getDom('group_dw').innerHTML = '开天辟地';
}
}]
});
// 表格实例
var grid = new Ext.grid.GridPanel({
// 表格面板标题,默认为粗体,我不喜欢粗体,这里设置样式将其格式为正常字体
title : '<span class="commoncss">表格综合演示七(表头分组支持)</span>',
height : 500,
frame : true,
autoScroll : true,
region : 'center', // 和VIEWPORT布局模型对应,充当center区域布局
margins : '3 3 3 3',
store : store, // 数据存储
stripeRows : true, // 斑马线
cm : cm, // 列模型
tbar : tbar, // 表格工具栏
bbar : bbar,// 分页工具栏
plugins : group,
viewConfig : {
// 不产横向生滚动条, 各列自动扩展自动压缩, 适用于列数比较少的情况
// forceFit : true
},
loadMask : {
msg : '正在加载表格数据,请稍等...'
}
});
// 页面初始自动查询数据
// store.load({params : {start : 0,limit : bbar.pageSize}});
// 布局模型
var viewport = new Ext.Viewport({
layout : 'border',
items : [grid]
});
// 查询表格数据
function queryCatalogItem() {
store.load({
params : {
start : 0,
limit : bbar.pageSize,
xmmc : Ext.getCmp('xmmc').getValue()
}
});
}
});
『贰』 ExtJs中怎么上传文件
下面为大家介绍在ExtJs中上传文件的几种方法
第一种方法:传统的上传方式
在formpanal中增加一个fileUpload的属性
例子代码:
JScript 代码 复制
Ext.onReady(function(){
var form = new Ext.form.FormPanel({
renderTo:'file',
labelAlign: 'right',
title: '文件上传',
labelWidth: 60,
frame:true,
url: 服务器处理上传功能的url地址,//fileUploadServlet
width: 300,
height:200,
fileUpload: true,
items: [{
xtype: 'textfield',
fieldLabel: '文件名',
name: 'file',
inputType: 'file'//文件类型
}],
buttons: [{
text: '上传',
handler: function() {
form.getForm().submit({
success: function(form, response){
Ext.Msg.alert('信息', response.result.msg);
},
failure: function(){
Ext.Msg.alert('错误', '文件上传失败');
}
});
}
}]
});
});
第二种方法:借助Ext.ux.UploadDialog.Dialog的组件,在编码时需要导入两个文件
需要引入 Ext.ux.UploadDialog 样式文件 和 Ext.ux.UploadDialog.packed脚本文件。
例子代码
//在使用此方法进行文件上传时,其后台往页面的返回值类型是这样的:
//{'success':true,'message':'上传成功'}
//如果没有success:true,无论上传成功与否,显示的都是上传失败,其实这个和form.submit()的提交方式是一个道理。
var dialog = new Ext.ux.UploadDialog.Dialog({
autoCreate: true,
closable: true,
collapsible: false,
draggable: true,
minWidth: 400,
minHeight: 200,
width: 400,
height: 350,
permitted_extensions:['JPG','jpg','jpeg','JPEG','GIF','gif','xls','XLS'],
proxyDrag: true,
resizable: true,
constraintoviewport: true,
title: '文件上传',
url:用于处理上传文件功能的Url,
reset_on_hide: false,
allow_close_on_upload: true ,
upload_autostart: false
});
//定义上传文件的按钮
var btnShow = new Ext.Button({
text:'上传文件',
listeners:{
click:function(btnThis,eventobj){
dialog.show();
}
}
});
『叁』 Extjs时间控件
代码如下:
Extjs 时间选择控件
这是实现时间控件选择的方法
<script type="text/javascript">
Ext.onReady(function () {
var times = new Ext.form.TimeField({
increment: 10, //时间间隔
minValue: '08:00 AM', //最小显示的时间
renderTo: Ext.get('times'), //
autoShow: true,
format: 'H:i', //显示格式,H代表小时;i代表分钟;m代表秒
width: 60
}
});
});
</script>
下面是html的控件
<div id="times" style="margin-left:40px;"></div>
完整的页面如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="http://blog.163.com/sam_0815/blog/Ext/resources/css/ext-all.css" rel="stylesheet" type="text/css" />
<script src="http://blog.163.com/sam_0815/blog/Ext/adapter/ext/ext-base.js" type="text/javascript"></script>
<script src="http://blog.163.com/sam_0815/blog/Ext/ext-all.js" type="text/javascript"></script>
<script type="text/javascript">
Ext.onReady(function () {
var times = new Ext.form.TimeField({
increment: 10,
minValue: '08:00 AM',
renderTo: Ext.get('times'),
autoShow: true,
format: 'H:i',
width: 60
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="times" style="margin-left:40px;"></div>
</div>
</form>
</body>
</html>
运行结果:
『肆』 Extjs里面两个时间相减为NaN
var date1='2010-09-13 12:30:00';
var date2='2010-09-13 14:30:00';
var date = new Date();
date1 = Date.parseDate(date1,'Y-m-d h:i:s');
date2 = Date.parseDate(date2,'Y-m-d h:i:s');
alert(date1.getTime());
alert(date2.getTime());
alert(date2-date1);//算出的是毫秒数的差
alert((date2-date1)/1000/60/60);//除以1000毫秒,60秒,60分,剩下的就是小时
『伍』 想用Extjs做一个左右布局的格式
如果是form或者panel可使用column布局处理,
如果是整体页面的处理可使用panel的region:west和center布局处理。
『陆』 extjs的displayfield组件如何获取grid中的某一列的值
1.1:数据对应的列,加了一个点击事件,获取到该列的值,然后赋值
{
align: 'center',
text: 'A,
dataIndex: 'A',
width:60,
renderer : function(val, meta, record) {
val = "<a href='javascript:;' >"+val+"</a>";
meta.tdAttr = 'data-qtip="' + val + '"';
return '<div align="left">' + val + '</div>';
},
listeners:{
'click':function(){
var rows = grid.getSelectionModel().getSelection();
displayfield.setValue(rows[0].get('A'));//通过rows[0].get('字段名')来获取A字段的值,然后赋值给displayfield
}
}
2.如果有点击事件的话,你可以直接使用 var rows = grid.getSelectionModel().getSelection();获取store的数据模型(存放了所有的记录),rows[0]是指定行的记录(包括隐藏的字段),displayfield这个在grid外面创建好的,在grid可以引用到的话可以直接使用 displayfield.setValue(rows[0].get('A'));来赋值
3.
var display = Ext.create('Ext.form.field.Display',{
xtype: 'displayfield',
fieldLabel: 'Visitor',
name: 'visitor_score',
value: '11'
})
var grid = Ext.create('Ext.grid.Panel', {
store: store,
columns: [
{text : 'Company',
flex : 1,dataIndex: 'company',
renderer : function(val, meta, record) {
val = "<a href='javascript:;' >"+val+"</a>";
return val;
},
listeners:{
'click':function(){
var rows = grid.getSelectionModel().getSelection();
display.setValue(rows[0].get('name'))
}
}
} ], dockedItems: [{
xtype: 'toolbar',
dock: 'top',
items: [display]
}]
});
});
『柒』 extjs背景颜色的代码是多少
extjs grid设置某列背景颜色和字体颜色的方法,参考如下:
css代码:
.x-grid-back-red {
background: #FF0000;
}
js代码:
{
header : '分成类型',
dataIndex : 'divideType',
renderer : function(v,m){
m.css='x-grid-back-red';
return v;
},
width : 60
}
或者直接这样写也可以
{
header : '编号',
dataIndex : 'fcId',
css : 'background: #FF0000;',
width : 40
}
extjs grid设置某行字体颜色
css代码:
.x-grid-record-red table{
color: #FF0000;
}
js代码:
代码
viewConfig : {
forceFit : true,
getRowClass : function(record,rowIndex,rowParams,store){
//禁用数据显示红色
if(record.data.zt==0){
return 'x-grid-record-red';
}else{
return '';
}
}
},
『捌』 ExtJS 怎么让一个组件禁止获取焦点
按我当前的版本,设置文本框disabled时,默认应用样式类为x-item-disabled(ext-all.css中),如下:
.x-item-disabled {
cursor: default;
opacity: 0.6;
background-color:#fff;
-moz-opacity: .6;
filter: alpha(opacity=60);
}
所以,你版如果需权要在某个页面中将某些文本框设置disabled但不希望整个内容变灰
,则可将此段样式拷贝到那个页面里重新声明并将透明度调一下,如opacity: 1;-moz-opacity: 1;这样就ok了。p.s. 文本框设置disabled时是不会传值给后台的要注意!
『玖』 extjs获取当前时间并且怎么取7天前的时间
///获取当前日期(到秒)
var curDate = new Date()
//格式化;
var time=Ext.Date.format(curDate, 'Y-m-d');
///取7天前的时间
var now = new Date(new Date()-7*24*60*60*1000);
alert(now);
或
var today = new Date();
today.setDate(parseInt(today.getDate()) - 7);
console.log(today.toLocaleString());