`
清风_夕瑶
  • 浏览: 53802 次
  • 性别: Icon_minigender_1
  • 来自: 潘多拉星球
社区版块
存档分类
最新评论

ext动态加载模板(加载后不可编辑)

    博客分类:
  • js
阅读更多

       从建基础数据(包含维护),到创建模板,再到最后的引用花费了5天的时间。如果不是机器太破,3天的时间足够了。可惜,创建出来的模板不具备可编辑性。毕竟也是一番汗水,一份经验,就保存留个纪念(仅模板使用展现)。

ChooseBdgModeWin=function(config){
   var flagCode = null;//模板code修改时使用
   var pbCode = null;	//概算ID,不为空时表示修改概算
   var pbName = new Ext.form.TextField({fieldLabel:'名称',name:'pbName',allowBlank:false,value:config.proName+'概算'});
   var pbDocument = new Ext.form.TextField({fieldLabel:'文件号',name:'pbDocument',allowBlank:false});
   var pbRemark  = new Ext.form.TextArea({xtype:'textarea',fieldLabel:'备注',name:'pbRemark',height:300});
   var bgPanel=new Ext.form.FormPanel({
		width:780,labelWidth:45,labelAlign:"right",
		layout : "form",frame:true,defaults:{anchor:'98%',xtype:'textfield'},
		items:[pbName,pbDocument,pbRemark]
	});
   var templetStore = new Ext.data.Store({
						reader: new Ext.data.JsonReader({root:'root',totalProperty:'totalProperty'},[{name:'btCode',mapping:'btCode'},{name:'btName',mapping:'btName'}]),
					     proxy: new Ext.data.HttpProxy({url:contextPath+'/project/xmgs.ext?pmethod=getTemplet'})
						})
   var templetCombo = new Ext.form.ComboBox({anchor:'95%',labelAlign:"right",fieldLabel:"选择模板",name:'btName',mode:"remote",triggerAction:"all",
					  displayField:"btName",valueField:'btCode',emptyText : "----------------------------------------------选择模板----------------------------------------------",
					  editable:false,store :templetStore,allowBlank:false,
					  listeners:{'select':showTemplet}
					  });
  //展现选择的模板					  
  function showTemplet(templet){
	  flagCode = null;
      var code = templet.value;
      Ext.Ajax.request({
         url:contextPath+'/project/xmgs.ext',
         method:'post',
         params:{pmethod:'showTempletConstructor',btCode:code},
         success:function(response,action){
           var records = Ext.decode(response.responseText);
           templetInfo(records);
         }
      });
  }	
  var maps = {};				  
 function templetInfo(records){
   maps = {};	 
   bdgetRecords = records;
   alert(Ext.encode(records));
   var html = '<div align="center"><table  width="500" border="1" cellpadding="0" cellspacing="0">'
			+'<tr><td width="50" height="50" align = "center" colspan="2">序号</td><td align = "center" width="300">项目费用名称</td><td>投资金额(单位:元)</td></tr>';
   var tempId = Ext.id();//概算总金额
   var tempField = new Ext.form.NumberField({readOnly : true,style:' background:#f0f0f0' });
   maps[tempId] = {field:tempField,recordID:'root'};
   html += '<tr><td width="50" height="35" align = "center" colspan="2">&nbsp;</td><td align = "center" width="300">概算总金额</td><td id="' + tempId + '"></td></tr>';
   var tempFlag = '0';
   var tempParent = 0,tempChild = 0,flag=0;//依次代表:父项、子项和序列排号
   var curentParent = null;
   for(var i = 0; i < records.length; i++){
      flag++;
      var record = records[i];
      tempFlag = record.parent;
      if(record.parent == '0'){
          var id = Ext.id();
          var field = new Ext.form.NumberField({readOnly : true,style:' background:#f0f0f0' });
          currentParent = id;
          maps[id] = {field: field, parentId : null,recordID:record.id};

          tempChild = 0;
          html += '<tr><td width="50" height="35">'+(++tempParent)+'</td><td width="50">&nbsp;</td><td align = "center" width="300">'+record.text+'</td><td id="' + id + '"></td></tr>';
      }else if(tempFlag != '0' && record.parent == tempFlag){
          var id = Ext.id();
          var field = new Ext.form.NumberField({parentId : currentParent});
          field.on('change', function(f) {
             var pid = f.initialConfig.parentId;
             var pField = maps[pid].field;
             var totalCount = 0.0;
             if(tempField.getValue() != "") {
                 totalCount = tempField.getValue() - pField.getValue();
             }   
             var count = 0.0;
             for(var n in maps) {
                 if(maps[n].parentId == pid) {
                     if(maps[n].field.getValue() != "") {
                     	count += maps[n].field.getValue();
                     }
                 }
             }
             pField.setValue(count);
             tempField.setValue(count+totalCount);
          });
          maps[id] = {field: field, parentId : currentParent,recordID:record.id};
          html += '<tr><td width="50" height="35">&nbsp;</td><td width="50">'+(++tempChild)+'</td><td width="300">'+record.text+'</td><td id="' + id + '"></td></tr>';
      }
   }		
   saveBudgetIndex = flag;
   html += '</table><br></div>';	
   var flagPanel = templetPanel.findByType('panel')[0];
   templetPanel.remove(flagPanel);
   var tempPanel = new Ext.Panel({layout:'form',autoScroll:true,labelWidth:65,
            html:html})
   templetPanel.add(tempPanel);
   templetPanel.doLayout();
   for(var n in maps) {
	   maps[n].field.render(n);
   }
} 
  var chooseTempletCmbP = new Ext.Panel({
           region:'north',pading:'5px 5px 5px 5px',height:30,anchor:'95%',
           frame:true,layout:'form',labelWidth:65,
           items:[templetCombo]
  	    }); 
  	    
  var templetPanel = new Ext.Panel({
           region:'north',pading:'5px 5px 5px 5px',height:30,anchor:'95%',
           frame:true,layout:'form',labelWidth:65,autoScroll:true,
           items:[templetCombo]
  	    }); 
	function saveFn(){
	  var bgInfo = convertRecordsToJson(ds_privilege);
	    Ext.Ajax.request({
	     url:contextPath+'/project/xmgs.ext',
	     params:{pmethod:'addItems',bgInfo:bgInfo,parentID:parentID+','+config.ipId},
	     method:'post',
	     success:function(response,options){
	        treeReLoad();
	     }
	  });
	}
  var lastStepBtn = new Ext.Button({text:'上一步',iconCls:'x-button-prior',handler:lastStepFn,hidden:true});
  var nextStepBtn = new Ext.Button({text:'下一步',iconCls:'x-button-go',handler:nextStepFn});
  var clsBtn = new Ext.Button({text:'关闭',iconCls:'x-button-cancel',handler:clsFn,scope:this});
  var saveBtn = new Ext.Button({text:'保存',iconCls:'x-button-save',handler:saveBuggetFn,scope:this,hidden:true});
  var bgPanel=new Ext.Panel({
		layout : "card",
		activeItem :0,autoScroll:true,
		tbar:[nextStepBtn,lastStepBtn,clsBtn,saveBtn],
		items:[bgPanel,templetPanel]
	});
	//上一步
	function lastStepFn(){
	  bgPanel.getLayout().setActiveItem(0);
	  nextStepBtn.show();clsBtn.show();
	  lastStepBtn.hide();saveBtn.hide();
	}
	//下一步
	function nextStepFn(){
	  if(!pbName.isValid()){
             Ext.Msg.alert("系统提示","请先填写概算名称,再做操作!");
             return;
		   };
	   if(!pbDocument.isValid()){
		   Ext.Msg.alert("系统提示","请先填写文件号,再做操作!");
           return;
		   }	   
	  bgPanel.getLayout().setActiveItem(1);
	  nextStepBtn.hide();clsBtn.hide();
	  lastStepBtn.show();saveBtn.show();
	  if(pbCode != null) budgetInfo();
	}
	function valueToHtml(value){
	    var records = Ext.decode(value);
	    for(var i =0; i < records.length;i++){
		     var record = records[i];
	    	 for(var n in maps) {
	    		 var m = maps[n];
	             if(m.recordID == record.btiCode){ 
	                 v = m.field.setValue(record.invest);
	                 break;
	             }
		    }
	   }
    };
	//修改概算时,显示概算信息
	function budgetInfo(){
		 Ext.Ajax.request({
		     url:contextPath+'/project/xmgs.ext',
		     params:{pmethod:'getProBgsInfo',pbCode:pbCode},
		     method:'post',
		     success:function(response,options){
		        var ob = Ext.decode(response.responseText);
		        templetCombo.setValue(ob.btName);
		        flagCode = ob.btCode;
                var records = Ext.decode(ob.templetInfo);
		        templetInfo(records);
		        if(ob.budInfo !='')valueToHtml(ob.budInfo);
		     },
		     failure:function(response,options){
		         var ob = Ext.decode(response.responseText);
		         Ext.Msg.alert("系统提示",ob.btName);
		     }
		  });
	}
	
	//保存概算
	function saveBuggetFn(){
	if(!templetCombo.isValid()){
        Ext.Msg.alert("系统提示","请先选择模板,再做保存!");
		return;
	 }
	 var sbBdValue = [];
	 for(var i = 0;i<bdgetRecords.length;i++){
	    var record = bdgetRecords[i];
	    var v = null;
	    for(var n in maps){
		   var m = maps[n];
		   //if(m.recordID == 'root') alert(m.field.getValue());
           if(m.recordID == record.id){ 
               v = m.field.getValue();
               break;
           }
		}
		var a = {btiCode: record.id , pbiName : record.text , pbiParentcode : record.parent, pbiLevel : record.level, pbiInvestsum : v};
		sbBdValue[sbBdValue.length] = a;
        
	 }
	 var btCode = (flagCode==null? templetCombo.getValue():flagCode)
	 Ext.Ajax.request({
	     url:contextPath+'/project/xmgs.ext',
	     params:{pmethod:'addProBgs',ipId:config.proCode,pbName:pbName.getValue(),btCode:btCode,
		         pbCode:pbCode,pbDocument:pbDocument.getValue(),pbRemark:pbRemark.getValue(),
	             addItems:Ext.encode(sbBdValue)},
	     method:'post',
	     scope:this,
	     success:function(response,options){
	        var ob = Ext.decode(response.responseText);
	        Ext.Msg.alert('系统提示',ob.message);
	        if(ob.success){
	        	bdgetRecords = null;
	        	Ext.getCmp(config.gridID).RefreshGrid();
		        this.close();
		        }
	     },
	     failure:function(response,options){
	         var ob = Ext.decode(response.responseText);
	         Ext.Msg.alert("系统提示",ob.message);
	     }
	  });
	}
	//关闭窗口
	function clsFn(){
	    this.close();
	}
	//对文本域赋值
	this.setInfo = function setInfo(values){
	   pbName.setValue(values.pbName);
	   pbDocument.setValue(values.pbDocument);
       pbRemark.setValue(values.pbRemark);
	}
	//为概算ID赋值
	this.setPbCode = function(value){pbCode = value;}
	ChooseBdgModeWin.superclass.constructor.call(this,{frame:true,autoScroll:true,height:450,width:640,layout:'fit',items: [bgPanel]});
};
Ext.extend(ChooseBdgModeWin,Ext.Window);

 

 

分享到:
评论

相关推荐

    ext UI效果模板

    1. 表单元素:如文本框、复选框、单选按钮、下拉列表等,支持各种验证和动态加载。 2. 数据网格:用于展示大量数据,支持分页、排序、过滤和编辑。 3. 工具栏和菜单:提供常用操作的快捷入口,可以自定义图标和事件...

    EXT可视化编辑器

    5. **功能特性**:可能包括但不限于自定义布局管理、拖放组件、实时预览、数据绑定、多语言支持、模板编辑、代码导出等功能。 6. **学习与使用**:掌握EXT可视化编辑器需要了解EXT框架的基本概念,理解JavaScript和...

    动态生成ext

    9. **性能优化**: 动态生成ext还可以作为性能优化的一种策略,通过减少不必要的资源加载,提高页面加载速度,提升用户体验。 10. **安全性**: 虽然动态生成ext提供了灵活性,但也可能引入安全风险,比如注入攻击。...

    Ext TreePanel Checked Ext复选框树

    在IT领域,特别是前端开发中,`Ext JS`是一个广泛使用的JavaScript库,它提供了一整套组件和工具,用于构建富交互式的Web应用程序。`TreePanel`是`Ext JS`中的一个关键组件,用于展示层次结构的数据,就像操作系统中...

    EXT测试小样例--EXT测试小样例

    1. 数据分页:EXT Grid支持动态加载数据,可以按需加载页面大小内的数据,减少初始加载时间并优化用户体验。 2. 数据排序:用户可以通过点击列头对数据进行升序或降序排序,方便查看和分析数据。 3. 数据过滤:EXT ...

    Ext可视化安装程序 学习Ext不可不用的工具

    总结来说,"Ext可视化安装程序"是学习和使用ExtJS不可或缺的利器,它通过可视化的方式简化了安装和配置流程,使得开发者能够更高效地利用ExtJS的强大功能来构建高质量的Web应用。对于想要深入理解和使用ExtJS的...

    Ext 3.0 中文文档.zip

    这份"Ext 3.0中文文档.CHM"包含了上述所有主题的详细解释和示例代码,是学习和使用Ext 3.0不可或缺的参考资料。无论你是初学者还是有经验的开发者,都可以从中找到解决实际问题的方法和技巧,进一步提升你的前端开发...

    Ext Js权威指南(.zip.001

    4.4.4 实现动态加载:ext.loader / 151 4.4.5 管理类的类:ext.classmanager / 159 4.4.6 类创建的总结 / 161 4.5 动态加载的路径设置 / 163 4.6 综合实例:页面计算器 / 165 4.7 本章小结 / 169 第5章 ext ...

    eclipse 3.4 ext 插件 spket

    Eclipse 3.4中的SPKET插件是EXT开发者不可或缺的工具,它通过丰富的特性为EXT开发提供了强大的支持。通过合理利用这些特性,开发者可以提高编程效率,降低出错率,同时提升EXT项目的质量和可维护性。无论你是初学者...

    Ext-JS 3.0 Cookbook Packt Publishing PDF

    ### Ext JS 3.0 Cookbook – 关键知识点解析 #### 一、书籍概述 《Ext JS 3.0 Cookbook》是一本由Packt...无论是对于想要提升自己技能水平的开发者还是希望构建高质量Web应用的团队来说,都是一本不可或缺的参考书籍。

    利用Ext回调函数设置权限

    在任何一款涉及多用户的Web应用中,权限控制都是必不可少的功能之一。合理的权限分配可以有效防止未授权访问,保护系统中的敏感数据不被非法获取或篡改。此外,良好的权限设计还能提升用户体验,让用户只看到他们...

    ExtJS动态打包Loader

    ExtJS动态打包Loader是JavaScript开发中的一个重要工具,主要用于优化和管理Ext JS应用程序的资源加载。在大型Web应用中,由于代码量大、模块多,...对于任何复杂的Ext JS项目,理解和掌握Loader的使用都是必不可少的。

    Ext 模仿Excel电子表格

    7. **性能优化**:处理大量数据时,性能优化是必不可少的。这可能涉及分块加载数据、虚拟滚动等技术。 8. **响应式设计**:考虑到不同设备的屏幕尺寸,我们的模仿应用应具有良好的响应性,以适应桌面和移动设备。 ...

    Ext+Struts2的学生成绩管理系统

    Ext可以创建动态的查询条件,Struts2处理查询请求,返回查询结果,并利用模板技术生成对应的视图。 4. **统计分析**:系统能够生成各种成绩报表,如平均分、排名等。这通常涉及到复杂的计算逻辑,可能需要用到...

    ext2.x 在domino中的应用

    例如,EXT的网格组件可以用于显示和编辑大量数据,而树组件则可用于导航复杂的层次结构。 2. **Ajax技术**:EXT的核心是基于Ajax,它允许在不刷新整个页面的情况下更新部分网页内容,提高应用响应速度和用户体验。...

    Ext combobox 下拉多选框带搜索功能

    ComboBox在Ext JS中是一个常用的组件,通常用于展示一组可选项,用户可以通过输入文字或者点击下拉列表来选择。而“下拉多选框”意味着这个ComboBox支持多选模式,用户可以选择多个值而不是仅限于一个。结合“带搜索...

    ext.net2.0的dll

    1. **组件丰富**:Ext.NET 2.0 包含了大量的UI组件,如表格(GridPanel)、树形视图(TreePanel)、窗体(FormPanel)、菜单(Menu)、工具栏(Toolbar)等,这些都是开发Web应用不可或缺的部分。 2. **数据绑定**...

Global site tag (gtag.js) - Google Analytics