EXT各个控件属性3.docx
- 文档编号:24640378
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:28
- 大小:61.89KB
EXT各个控件属性3.docx
《EXT各个控件属性3.docx》由会员分享,可在线阅读,更多相关《EXT各个控件属性3.docx(28页珍藏版)》请在冰豆网上搜索。
EXT各个控件属性3
一、如何同步调用Ajax远程数据
// 同步方式,API不直接提供,获取XHR的conn的引用即可
var url = "myApp/getUserList.do";
var conn = new Ext.data.Connection()conn;
conn.open("POST", url, false);
conn.send(null);
var json = Ext.decode(conn.responseText);
// 异步方式,这是常用的方式
new Ext.data.Connection().request({
// 此即是Ext和Struts交互的关键
url:
'myApp/getUserList.do',
params:
{id:
10001,name:
'测试'},
failure:
requestFailed,
success:
requestSuccessful
}
//同步方式,API不直接提供,获取XHR的conn的引用即可varurl="myApp/getUserList.do";varconn=newExt.data.Connection()conn;conn.open("POST",url,false);conn.send(null);varjson=Ext.decode(conn.responseText);//异步方式,这是常用的方式newExt.data.Connection().request({//此即是Ext和Struts交互的关键url:
'myApp/getUserList.do',params:
{id:
10001,name:
'测试'},failure:
requestFailed,success:
requestSuccessful}
二、全局性、强制指定HTTP方法(动词)
viewplaincopytoclipboardprint?
Ext.Ajax.on('beforerequest', function(){
arguments[1].method = 'GET' // or 'POST'\'PUT'\'DELETE'
});
Ext.Ajax.on('beforerequest',function(){arguments[1].method='GET'//or'POST'\'PUT'\'DELETE'});
三、怎么对form中的textfield赋值
viewplaincopytoclipboardprint?
Ext.getCmp("TextField_id").setValue("value");
Ext.getCmp("TextField_id").setValue("value");
四、布局一些已知的限制
'fit'的layout中items只能放一个子组件,即使放多个,也只会显示第一个。
而且aotuHeight属性页不能和fit一起使用;'border'布局方式中,分为东西南北中五个region,其中center是自动计算大小的。
而'south','north'只能设置高度,'west','east'只能设置宽度。
(by佚名网友)
五、返回当前类的静态成员的另外一种方法:
constructor.prototype
viewplaincopytoclipboardprint?
/**
* @class xyj.Controlller
* A Model class represents and manages a tables in a database.
* Model instances represent individual records in the table.
* Models follow the ‘Active Record’ design pattern for object-relational mapping.
*/
xyj.data.Controlller = function(config){
this.parents = [];
this.children = [];
Object.apply(this, config);
Array.each(this.belongTo, this.assignElment, {scope:
this, which:
0});
Array.each(this.hasMany, this.assignElment, {scope:
this, which:
1});
};
xyj.data.Controlller.prototype = {
/**
*
* 原本函数是这样的(this还是指当前实例):
*
var _instancePrototype = this.constructor.prototype;
Array.each(this.belongTo, function(i){
if (typeof i == 'string') {
_instancePrototype.belongTo.call(this, i);
}
else
if (NJS.Array.isArray(i)) {
_instancePrototype.belongTo.call(this, i[0], i[1]);
}
}, this);
Array.each(this.hasMany, function(i){
if (typeof i == 'string') {
_instancePrototype.hasMany.call(this, i);
}
else
if (NJS.Array.isArray(i)) {
_instancePrototype.hasMany.call(this, i[0], i[1]);
}
}, this);
* 当前,我们变成这样:
* @param {} schema
*/
assignElment :
function(i){
var _instancePrototype = this.scope.constructor.prototype;
if (typeof i == 'string') {
_instancePrototype[this.which?
'hasMany':
'belongTo'].call(
this.scope, i
);
}else if(Array.isArray(i)) {
_instancePrototype[this.which?
'hasMany':
'belongTo'].call(
this.scope, i[0], i[1]
);
}
}
}
/***@classxyj.Controlller*AModelclassrepresentsandmanagesatablesinadatabase.*Modelinstancesrepresentindividualrecordsinthetable.*Modelsfollowthe‘ActiveRecord’designpatternforobject-relationalmapping.*/xyj.data.Controlller=function(config){this.parents=[];this.children=[];Object.apply(this,config);Array.each(this.belongTo,this.assignElment,{scope:
this,which:
0});Array.each(this.hasMany,this.assignElment,{scope:
this,which:
1});};xyj.data.Controlller.prototype={/****原本函数是这样的(this还是指当前实例):
*var_instancePrototype=this.constructor.prototype;Array.each(this.belongTo,function(i){if(typeofi=='string'){_instancePrototype.belongTo.call(this,i);}elseif(NJS.Array.isArray(i)){_instancePrototype.belongTo.call(this,i[0],i[1]);}},this);Array.each(this.hasMany,function(i){if(typeofi=='string'){_instancePrototype.hasMany.call(this,i);}elseif(NJS.Array.isArray(i)){_instancePrototype.hasMany.call(this,i[0],i[1]);}},this);
*当前,我们变成这样:
*@param{}schema*/assignElment:
function(i){var_instancePrototype=this.scope.constructor.prototype;if(typeofi=='string'){_instancePrototype[this.which?
'hasMany':
'belongTo'].call(this.scope,i);}elseif(Array.isArray(i)){_instancePrototype[this.which?
'hasMany':
'belongTo'].call(this.scope,i[0],i[1]);}}}
六、GridPanel如何加上自动的顺序号?
制定一个列Column对象:
newExt.grid.RowNumberer()
七、如何在表格中添加CheckBox呢?
viewplaincopytoclipboardprint?
var sm = new Ext.grid.CheckboxSelectionModel();
var cm = new Ext.grid.ColumnModel([
…,
sm, // 添加的地方
…
]);
varsm=newExt.grid.CheckboxSelectionModel();varcm=newExt.grid.ColumnModel([…,sm,//添加的地方…]);
八、EXT怎么给IMAGE或者DIV控件加右键菜单
viewplaincopytoclipboardprint?
注意:
那个ext-core.js要引入上
九、手动触发浏览器事件,IE与FF有别:
viewplaincopytoclipboardprint?
// No way to get the event of 'submit' on FF,
//uses 'onsubmit="return false;' in HTML insteaed!
function doSubmit(e, el){
if(e.browserEvent.type =='submit'){
IE caught OK!
};
if (Ext.isIE)
el.fireEvent('onsubmit');
else {
var e = document.createEvent("Events");
e.initEvent("submit", true, true);
el.dispatchEvent(e);
}
}
//Nowaytogettheeventof'submit'onFF,//uses'onsubmit="returnfalse;'inHTMLinsteaed!
functiondoSubmit(e,el){if(e.browserEvent.type=='submit'){IEcaughtOK!
};if(Ext.isIE)el.fireEvent('onsubmit');else{vare=document.createEvent("Events");e.initEvent("submit",true,true);el.dispatchEvent(e);}}
注意不是submit()的执行方法,而是触发、分发事件,有一定区别。
十、如何选取Grid的数据记录?
行选择模式的话,将是:
viewplaincopytoclipboardprint?
var rowcount = grid.getSelectionNode().getSelections();
varrowcount=grid.getSelectionNode().getSelections();
可以获取全部选中的记录,得到的rowcount将是一个Array,比如想获取sex列的数据,语句如下:
viewplaincopytoclipboardprint?
var strsex = rowcount[i].get(‘sex’);
varstrsex=rowcount[i].get(‘sex’);
十一、Grid单元格选取模式
如果在GridPanel的配置属性增加sm属性如下,则就是“单元格选择模式”:
viewplaincopytoclipboardprint?
sm:
new Ext.grid.CellSelectionModel();
sm:
newExt.grid.CellSelectionModel();
当单击时将选中对应的某一个单元格,而不是默认的选择某一行。
选择方式如下:
viewplaincopytoclipboardprint?
var cell = grid.getSelectionNode().getSelectedCell();
varcell=grid.getSelectionNode().getSelectedCell();
得到的cell记录了当前选择的行(cell[0])以及列(cell[1]).可以通过一下语句得到该单元格数据:
viewplaincopytoclipboardprint?
var colname = grid.getColumnModel().getDataIndex(cell[1]); //获取列名
var celldata = grid.getStore().getAt(cell[0]).get(colname); //获取数据
getStore():
获取表格的数据集
getAt():
获取该数据集cell[0]行
get():
获取该行colname的数据
varcolname=grid.getColumnModel().getDataIndex(cell[1]);//获取列名varcelldata=grid.getStore().getAt(cell[0]).get(colname);//获取数据getStore():
获取表格的数据集getAt():
获取该数据集cell[0]行get():
获取该行colname的数据
十二、Tree节点的拖放。
重写beforeNodeDrop/nodeDrop函数
viewplaincopytoclipboardprint?
Client.Tree.UI = Ext.extend(Ext.tree.TreePanel, {
beforeNodeDrop:
function(e){
var s = e.data.selections, r = [];
for (var i = 0, len = s.length; i < len; i++) {
var ticket = s[i].data.ID; // s[i] is a Record from the grid
if (!
e.target.findChild('ID', ticket)) { // <-- filter duplicates
r.push(new Ext.tree.TreeNode({ // build array of TreeNodes to add
allowDrop:
false,
text:
'Ticket #' + ticket,
ticket:
ticket,
action:
'view'
//qtip:
String.format('{0}
{1}', s[i].data.summary, s[i].data.excerpt)
}));
}
}
e.dropNode = r; // return the new nodes to the Tree DD
e.cancel = r.length < 1; // cancel if all nodes were duplicates
},
nodeDrop:
function(e){
// watchList.setText(String.format('My Watch List ({0})', watchList.childNodes.length));
// storeWatchList goes here;
}
});
Client.Tree.UI=Ext.extend(Ext.tree.TreePanel,{beforeNodeDrop:
function(e){vars=e.data.selections,r=[];for(vari=0,len=s.length;i e.target.findChild('ID',ticket)){//<--filterduplicatesr.push(newExt.tree.TreeNode({//buildarrayofTreeNodestoaddallowDrop: false,text: 'Ticket#'+ticket,ticket: ticket,action: 'view'//qtip: String.format('{0} function(e){//watchList.setText(String.format('MyWatchList({0})',watchList.childNodes.length));//storeWatchListgoeshere;}}); 十三、Grid被拖动过程中,修改提示文字。 重写getDragDropText函数 viewplaincopytoclipboardp
{1}',s[i].data.summary,s[i].data.excerpt)}));}}e.dropNode=r;//returnthenewnodestotheTreeDDe.cancel=r.length<1;//cancelifallnodeswereduplicates},nodeDrop:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EXT 各个 控件 属性