|
楼主 |
发表于 2008-3-20 21:28:45
|
显示全部楼层
JS File
所有的JS代码都存放在以下JS文件里面:
JS复制代码 Ext. onReady(function(){
var dataRecord = new Ext. data. Record. create([
{name: 'WOrder'},
{name: 'PartNumber'},
{name: 'WOPartQuantity'},
{name: 'PartPriority'},
{name: 'WODateIn', type : 'date', dateFormat : 'Y-m-d'},
{name: 'WODateOut', type : 'date', dateFormat : 'Y-m-d'},
{name: 'PartState'},
{name: 'Partstatus'},
{name: 'PartLocation'}
]);
var dataReader = new Ext. data. JsonReader({
root : 'results'
},
dataRecord
);
var dataProxy = new Ext. data. HttpProxy({
url : '../../../index.php/listboards/js_listboards',
method : 'POST'
});
var dataStore = new Ext. data. Store({
proxy : dataProxy ,
reader : dataReader
});
var colModel = new Ext. grid. ColumnModel([
{header : "Work Order", sortable : true, dataIndex : 'WOrder'},
{header : "art Number", dataIndex : 'PartNumber'},
{header : "QTY", dataIndex : 'WOPartQuantity'},
{header : "riority", sortable : true, dataIndex : 'PartPriority'},
{header : "Date In", renderer : Ext. util. Format. dateRenderer('m/d/Y'), dataIndex : 'WODateIn'},
{header : "Date Out",renderer : Ext. util. Format. dateRenderer('m/d/Y'), dataIndex : 'WODateOut'},
{header : "art State", dataIndex : 'PartState'},
{header : "art Status", dataIndex : 'PartStatus'},
{header : "art Location", dataIndex : 'PartLocation'},
]);
var grid = new Ext. grid. GridPanel({
autoHeight : true,
renderTo : 'mainGrid',
store : dataStore ,
id : 'grid',
width : 740,
viewConfig : {
forceFit : true
},
cm : colModel
});
dataStore. load();
// DEBUGGING ONLY - UNCOMMENT ONLY WHEN DEBUGGING CODE
/*dataStore.on({
'load':{
fn: function(store, records, options){
console.log('01 - Data Store listener fired (load), arguments:',arguments);
console.log(' this:',this);
}
,scope:this
}
,'loadexception':{
fn: function(httpProxy, dataObject, arguments, exception){
console.log('** - Data Store listener fired (loadexception), arguments:',arguments);
}
,scope:this
}
});
Ext.Ajax.on({
//Fires before a network request is made to retrieve a data object:
'beforerequest':{
fn: function(connection, options){
console.log('03 - Ajax listener fired (beforerequest), arguments(connection, options):',arguments);
}
,scope:this
}
//Fires if the request was successfully completed:
,'requestcomplete':{
fn: function(connection, response, options){
console.log('10 - Ajax listener fired (requestcomplete), arguments(connection, response, options):',arguments);
}
,scope:this
}
//Fires if an error HTTP status was returned from the server. See HTTP Status Code
//Definitions for details of HTTP status codes:
,'requestexception':{
fn: function(connection, response, options){
console.log('Ajax listener fired (requestexception), argumentsconnection, response, options)',arguments);
}
,scope:this
}
});
dataProxy.on({
'beforeload':{
fn: function(store, options){
console.log('02 - Proxy listener fired (beforeload), arguments:',arguments);
}
,scope:this
}
,'load':{
fn: function(store, options){
console.log('Proxy listener fired (load), arguments:',arguments);
}
,scope:this
}
,'loadexception':{
fn: function(store, options){
console.log('Proxy listener fired (loadexception), arguments:',arguments);
}
,scope:this
}
});*/
});
复制代码
自从我开始写代码我有很多我的问题,我对我需要的没有主义,并且其它例子也没有特别,然而它们提供更多更好的详细信息,但并不是必须的。
使你的Grid正常工作,您必须具备以下条件:
1.- A dataRecord:
记录或者数据行,如何接受你在这里定义的所有的操作呢?你不需要设置所有SQL查询中获得的字段,但如果你打算使用它,那你必须在这里定义它。定义数据类型并不是强制的,但如果你有很多日期字段,并打算格式化它,你将需要在我上面的代码中具体指定你能看到的数据类型”日期”。
2.- A dataReader:
这里你告诉它如何读取数据,我们返回一个JSON字符串,因此你需要使用一个JSON READER
3.- A dataProxy:
这里,我们告诉Grid,从哪里获取数据。在这个实例中,我们使用CI中的url 模型,如果你在配置中做了相关设置,但你也能使用"http://localhost/index.php?c=CONTROLLER&m=METHOD"。
注意: 你必须提供文件的路径,并且不能是全路径,例如: http://localhost/index.php?c=CONTROLLER&m=METHOD 和 http://localhost/index.php/CONTROLLER/METHOD 都是不正确的.这将造成不可访问,并且,你将需要使用scriptHttpProxy.
4.- A dataStore:
前3个步骤,我们建立一个data store ,并且我们建立了互相独立性质,使你很容易的建立Grid
5.- A ColumnModel:
这是可选的,但它的定义将使你的Grid代码看起来更美观,T否则,你将在Grid的定义里面定义你的数据列。
表头属性使人更容易了解你的表格,但data index必须符合第一步(dataRecord)定义的名称,否则你将得到一个空列或空的Grid
6.- A Grid:
最后,我们利用前面所有使更加容易理解的数据来建立Grid。
同样的,我建议大家分开定义所有的属性,使你的代码更加容易使用和调试。
最后你将看到我在"debugging"部分外面注释,因此如果你需要不注释调试它,请看firebug(Firefox的插件,用于调试页面)的信息。
View
在最后,我们将创建符合位于index()中的"load->view('main-grid')"所对应的视图:
HTML复制代码 <html>
<head>
<title>Grid Test </title>
<!-- Include Ext and app-specific scripts: -->
<script type="text/javascript" src="system/resources/js/extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="system/resources/js/extjs/ext-all-debug.js"></script>
<script type="text/javascript" src="system/resources/js/js_listboards.js"></script>
<script type="text/javascript" src="system/resources/js/mainMenu.js"></script>
<!-- Include Ext stylesheets here: -->
<link rel="stylesheet" type="text/css" href="system/resources/js/extjs/resources/css/ext-all.css">
<link rel="stylesheet" type="text/css" href="system/application/views/css/ExtStart.css">
</head>
<body>
<h1>My Grid </h1>
<div id="mainMenu"></div>
<div id="mainGrid"></div>
</body>
</html>
复制代码
翻译得比较匆忙,如有错漏,欢迎大家指正。
转帖请注明此文出至CI中国,谢谢合作! |
评分
-
查看全部评分
|