现在的位置: 首页 > 综合 > 正文

Extjs基本业务处理事件之MVC

2013年02月07日 ⁄ 综合 ⁄ 共 4936字 ⁄ 字号 评论关闭

1、store中参数的查询方式分为2种:

    filter:

   baseParam:

     grid.store.on('beforeload',function(store,options){
var new_params={
userid:id,
seachtime:search
};

                       //将参数集合拷贝到proxy中(代理请求)。
Ext.apply(grid.store.proxy.extraParams,new_params);
});

//返回第一页
grid.store.loadPage(1);

2)直接传递ID的方式:

ugrid.store.proxy.url='departUserList.action?departid='+id;
ugrid.store.load({
params:
{
start:0,
limit:10
}
});;

2、MVC中获取控件ID的值

在Controller中获取控件的方式,写法有两种。第一种:
this.control(
{
'RecordUserList button#query':{
click:this.queryClickListener
},

第二种:

如果是button的话,则

this.control(
{
'RecordUserList button
[id="query"]':{
click:this.queryClickListener
}

}

3、自定义控件:

Ext.define('Login.view.CheckCode',{ 
extend: 'Ext.form.field.Text',  
alias: 'widget.checkcode', 
inputTyle:'codefield', 
codeUrl:Ext.BLANK_IMAGE_URL, 
isLoader:true, 
onRender:function(ct,position){ 
this.callParent(arguments); 
this.codeEl = ct.createChild({ tag: 'img', src:'validationCode' }); 
this.codeEl.addCls('x-form-code'); 
this.codeEl.on('click', this.loadCodeImg, this);   
if (this.isLoader) this.loadCodeImg(); 
}, 
alignErrorIcon: function() { 
this.errorIcon.alignTo(this.codeEl, 'tl-tr', [2, 0]); 
}, 

loadCodeImg: function() { 
this.codeEl.set({ src: 'validationCode' + '?temp=' + new Date().getMilliseconds() });

}) 

4、数据更新(Form表单回填)

1)panel面板回填:

Ext.getCmp('RecordInfoTitleContent').update('<div>'+menusArray.content+'</div>');

2)form表单回填:

store.each(function(record){
// formPanel.down('form').loadRecord(record);
// });

1)如上所示,该方式是采用store的回填方式

2)加载远程数据回填:

/**
* var basice= formPanel.down('form').getForm();
* basice.load({
*  //类似ajax的请求表单事件的写法
* );
*/

3)Ext.getCmp('').setValue();

5、获取gridpanel中的数据项

var grid = o.findParentByType('gridpanel');
//获取store
//grid.getStore.getCount();
//另外一种方式:
//var data = grid.getSelectionModel().getSelection();
//取出选中的ID
//var st = grid.getStore();
//var ids=[];
//Ext.Array.each(data,function(record)){
//  ids.push(record.get('userid'));
//}
//将数组发到后台
//Ext.Ajax.request({
//url:'',
//params:{
//ids:ids.join("_");

}

6、表单提交:

var loginForm = Ext.getCmp('LoginUserFirmID');
if (loginForm.getForm().isValid) {
loginForm.form.doAction('submit', {
url : 'login.action',
method : 'post',
waitTitle : '请等待',
waitMsg : '正在加载',
success : function(form, action) {
Ext.Msg.alert('登入成功', action.result.message);
window.location="result.action";
},
failure : function(form, action) {
Ext.Msg.alert('登入失败', action.result.message);
}
});
}

7、获取控件

1)采用Ext.widget,如下所示:

Ext.widget('ResourceAdd',{
}).show();

2)采用控件ID的方式:

var grid = Ext.getCmp('ResourceList');

grid.getValue();

8、使用TreeStore加载

Ext.define('WorkDate.store.FunctionStore',{
extend:'Ext.data.TreeStore',
requires:'WorkDate.model.TreeModel',
model:'WorkDate.model.TreeModel',
alias:'widget.FunctionStore', 
proxy:{
type:'ajax',
url:'tree.action',
reader:'json',
autoLoad:true
}
});

形成树形的方式有:异步加载和一次性加载,如果采用一次性加载的方式,如下所示:

/**
 * @see 生成资源树
 * @author root
 *
 */
public class LoginResourceTree {
/**
* @see 根据当前角色取出资源菜单列表
* @param roleid
*/
public static String toTree(int roleid){
StringBuffer str = new StringBuffer();
Gson gson = new Gson();
List<TreeNode> treeNode = new ArrayList<TreeNode>();
List<Purview> list = new ArrayList<Purview>();
try {
Session session=HibernateUtils.getSession();
String sql= "from  Purview  pv where  pv.resource.rePid=? AND pv.role.RId=? AND pv.resource.State =1";
Query query=session.createQuery(sql);
query.setParameter(0, 0);
query.setParameter(1, roleid);
list=query.list();
if(list.size() >0){
for(Purview res:list){
TreeNode tree =new TreeNode();
tree.setId(String.valueOf(res.getResource().getReId()));
tree.setPid(String.valueOf(res.getResource().getRePid()));
tree.setText(res.getResource().getReName());
tree.setUrl(res.getResource().getRePath());
List result=toChildTree(res.getResource().getReId());
if(result != null){
tree.setChildren(result);
tree.setLeaf(false);
}else{
tree.setLeaf(true);
}
tree.setIcon(StringUtils.resultNull(res.getResource().getReIcon()));
treeNode.add(tree);
}

str.append(gson.toJson(treeNode));
}
System.out.println("list.size()="+str.toString());
} catch (RuntimeException e) {
e.printStackTrace();
HibernateUtils.closeSession();
System.err.println("LoginModule queryDepart error:"+e.getMessage());
}
return str.toString();
}
/**
* @see 生成子节点
* @param reid
* @return
*/
public static List toChildTree(int reid){
Gson gson = new Gson();
List<TreeNode> treeNode = new ArrayList<TreeNode>();
List<Resource> list = new ArrayList<Resource>();
try {
Session session=HibernateUtils.getSession();
String sql= "from  Resource res  where  res.rePid in (?)  AND res.State =1 ";
Query query=session.createQuery(sql);
query.setParameter(0, reid);
list=query.list();
if(list.size() > 0){
for(Resource res:list){
TreeNode tree =new TreeNode();
tree.setId(String.valueOf(res.getReId()));
tree.setPid(String.valueOf(res.getRePid()));
tree.setText(res.getReName());
tree.setUrl(res.getRePath());
List result=toChildTree(res.getReId());
if(result != null){
tree.setLeaf(false);
tree.setChildren(result);
}else{
tree.setLeaf(true);
}
tree.setIcon(StringUtils.resultNull(res.getReIcon()));
treeNode.add(tree);
}
}else{
treeNode=null;
}
} catch (RuntimeException e) {
e.printStackTrace();
HibernateUtils.closeSession();
System.err.println("LoginModule queryDepart error:"+e.getMessage());
}finally{
HibernateUtils.closeSession();
}
return treeNode;
}

抱歉!评论已关闭.