『壹』 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());