创建带有checkbox的树

项目中偶尔会使用Ext的一些组件,都是一些简单的应用,每次写不免有些浪费时间,自己封装组件有没那水准,索性把代码记下来,下次出现相同应用场景的时候可以直接拿过来用。

// ==== 使用Ext的展现方式 ===
	Ext.BLANK_IMAGE_URL = "/epstar/web/swms/client/resources/images/default/s.gif";
	if(win){
		win.show();
	}else{
		Ext.QuickTips.init();
		win = new Ext.Window({
			title: '添加课程到已有课组',
			width: 340,
			height: 380, 
			frame: true,
			layout: 'fit',
			modal:true,
			closeAction: 'hide',
			buttonAlign: 'center',
			items : new Ext.tree.TreePanel({
					id : 'courseTree',
					frame : false,
					rootVisible : false,
					autoScroll:true,
					root : new Ext.tree.AsyncTreeNode({
						id : 'root',
						text : 'root',
						expanded : true
					}),
					listeners : {
						'click' : function(node) {
							if (node.isLeaf()) {
								
							} else {
								node.toggle();
							}
						}
					},
					loader : new Ext.tree.TreeLoader({
						dataUrl : '/epstar/app/template.jsp?mainobj=EAMS/KKJHGL/V_PYGL_KKJHKZXZ&tfile=KKJH_KZXZWH/KKJH_KZXZWH_LOGIC',
						listeners : {
							'beforeload' : function(loader, node) {
								Ext.apply(loader.baseParams, {
									rootId : node.id,
									flag : 3,
									sXNXQDM : sXNXQDM
								});
							}
						}
					})
				}),
				buttons : [{
					text : '确定',
					handler : function() {
						var selNodes = Ext.getCmp("courseTree").getChecked();
						if(selNodes.length == 0){
							alert("提示:请选择需要补充课程的课组!");
							return;
						}
						if(selNodes.length > 1){
							alert("提示:请选择单个课组!");
							return;
						}
						var kzbh = "";
						Ext.each(selNodes, function(node){
							kzbh = node.id;
						});
						//异步调用
						Ext.Ajax.request({
							url: '/epstar/app/template.jsp?mainobj=EAMS/KKJHGL/V_PYGL_KKJHKZXZ&tfile=KKJH_KZXZWH/KKJH_KZXZWH_LOGIC',
							success: function(response){
								var rev = Ext.util.JSON.decode(response.responseText);
								if(rev.type){
									alert("添加成功!");
									win.close();
									Page_Reload();
								}else{
									alert("操作失败!" + rev.msg);
								}
							},
							failure: function(){
								alert("与后台交互失败!");
							},
							params: {jhidList: jhidList, kzbh:kzbh, xnxqdm:sXNXQDM, flag: "2"}
						});
					}
				},{
					text:'关闭',
					handler : function(){
						win.hide();
					}
				}],
				resizable : true
		});
		win.show();
	}
	// ==== the end ====

 展示效果:

经验需要积累:

1、实现某个功能的手段有很多,一条路走不通的时候可以换其他的路。例如今天对开课单位和学生院的判断,如果开课单位不是学生院或学生院隶属系则无法对其进行开放和关闭操作,在前台可以使用indexOf进行判断,但是存储过程中无法使用indexOf。那么也不一定非要自己实现一个indexOf,完全可以用下面的方式处理:

SELECT COUNT(1) INTO v_count FROM v_dm_dw_kkyx yx WHERE (yx.lsdwdm = in_xsyx OR yx.dwdm = in_xsyx) AND yx.dwdm = V_KKDW;
          IF v_count = 0 THEN 
             V_SFKF := '0';
          END IF;
 2、现场项目经理说了一句华尔街三原则:其一,不要花自己的钱办事。其二,永远不说出真相。其三,不要按规则办事。对于其一主要是要求我们在工作中要有协同工作的思想,不要什么事情都是自己一条龙服务。合理的需找资源也是分担风险也是很有必要的。其二,在客户现场工作的时候要向客户报喜不报忧,让客户对我们的项目充满信心,对于一些问题尽量将影响面缩小。其三,客户出现一些紧急问题时,不一定非要按照常规出牌,怎么处理方便快捷怎么来。哪怕是直接在数据库中给他处理了。

猜你喜欢

转载自yaya-wiscom.iteye.com/blog/1468715