问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Extjs 2.0 如何动态的添加checkBox

发布网友 发布时间:2022-04-28 15:23

我来回答

2个回答

懂视网 时间:2022-04-24 01:29

关于动态创建CheckBoxGroup 网上资料其实也不少,为什么要写此篇呢,是因为ext3里面还有一个坑,希望还能给看到这里的亲们提供一点力所能及的帮助吧。

Extjs3.0 中的CheckboxGroup默认不能动态添加item。虽然它继承了Ext.form.Field,但是却类似于容器。
CheckboxGroup配置中的items处理生成一个对应的panel,该处理过程只有一次,所以很难对CheckboxGroup进行动态添加。

	var checkBoxGroupTypes = new Ext.form.CheckboxGroup({
		xtype:'checkboxgroup',
 		fieldLabel:'请选择对应电厂',
 		columns:9,
 		width: 600, 
 		name:'plantGroup'
	});
	
	/*这里采用jquery的ajax请求,为解决同步异步问题
	 * 这里async 必须设置成false
	 * 否则页面加载时,无法将动态创建的checkBoxGroup添加到容器中*/
	$.ajax({
		url : plantGroupUrl,
		method : 'POST',
		async : false,
		cache : true,
		success : function(response){
			
			var res = response;
			var resLen = res.length;
			var items = [];
			for(var i = 0;i<res.length;i++){
				var data = res[i];
				var chb = {boxLabel:data.BRIEFNAME,name:data.CODE,inputValue:data.CODE,checked:true};
				items.push(chb);
			}
			
			checkBoxGroupTypes.items = items;
			checkBoxGroupTypes.doLayout();
		}
	});
/*这里采用jquery的ajax请求,为解决同步异步问题
	 * 这里async 必须设置成false
	 * 否则页面加载时,无法将动态创建的checkBoxGroup添加到容器中*/

 

这里其实主要看的就是这块注释,虽然简陋,但是这个问题昨天晚上让我一直头疼,索性不考虑,一觉醒来就有了灵感。

底下就是将创建的CheckBoxGroup添加到了panel里与网上的方式有所不同。

  

	var searchForm = new Ext.FormPanel({
		region:'north',
		frame:true,
		title:'查询条件',
		height:100,
		bodyStyle:'border:0px',
		collapsiple : true,
		animCollapse : false,
		layout : 'fit',
		items: [{
			bodyStyle:'border:0px',
			layout:'column',
			height:30,
			border:false,
			items:[
			{
				bodyStyle:'border:1px',
				layout:'form',
				labelWidth:80, 
				width:'220',
				border:false,
				allowBlank:false,
				items:[endMonth]
			},
			checkBoxGroupTypes,
			{ 
  		width:60,
  			bodyStyle:'border:0px',
  			layout: 'form',
  		border:false,
  		defaultType: 'textfield',
  		items: [{
 					xtype: 'button',
 					text: '查询',
 			 handler:function(){
 			 	if(checkSelectCondition()){
 			 		//在点击查询后过段时间再让其再点击查询
  			 	 this.disable();
  			 	 var thisObject = this;
  			 	 setTimeout(function(){thisObject.enable();}, 5000);
  			 	 search();
 			 	}
 			 }
  		}]
 			},{ 
  		width:70,
  			bodyStyle:'border:0px',
  			layout: 'form',
  		border:false,
  		defaultType: 'textfield',
  		items: [{
 					xtype: 'button',
 					text: '重置',
 			 handler:function(){
  					searchForm.getForm().reset();
 				}
  		}]
 		}
			]
		}]
	
	
	});

  

附录:这是当时参考的网上的例子,不同点(1)ajax(2)添加到容器的方式
Ext.Ajax.request({
   url: 'jsp/insurance/ins_liquidation/data/getPersonInsType.jsp',
   params : {'employeeId':employeeId},
   success: function(response, opts) {
  var res = Ext.util.JSON.decode(response.responseText).root;
  var resLen = res.length;
  var items=[];
  for(var i=0;i<res.length;i++)
  {
  var d=res[i];
  var chk = {boxLabel: d.insName, name: d.insTypesId, inputValue:d.insTypesId,checked:true};
  items.push(chk);
  } 
  //定义多选组
  var CheckBoxGroupTypes = new Ext.form.CheckboxGroup(
  {
  xtype: 'checkboxgroup', 
  fieldLabel: '申请清算险种', 
  id:'insTypeCb',
  name :'insTypeCb', 
  columns: resLen,
  anchor:"95%",
  msgTarget:"side",
  width:400
  });
  CheckBoxGroupTypes.items = items;
   var cbp = Ext.getCmp('checkBoxPanel');
   cbp.add(CheckBoxGroupTypes);
   cbp.doLayout();
   },
   failure: function(response, opts) {
  
   }
 });

热心网友 时间:2022-04-23 22:37

两种办法:
1:
从后台查出的权限,拼成字符串
,“,”分开,request.setArribute(‘')那个字符串
在前台拿到
用变量接受,将之转化成数组
循环数组,每次循环的时候,创建一个checkBox,ok
了,其实应该用checkboxgroup
这样只要创建boxlabel
就行了
以上做法
不好的地方是
只能在jsp中取得request中的属性,不能再js中即时的拿到
2:创建一个checkbox

里面的属性就是你checkbox想要设置的属性,然后从后台查出的权限,每个权限new出一个checkbox类,这样就得到一个checkbox的list
将之转化为json串
写到前台,前台接受并且解析出一个数组,循环数组,如的到得数组
powers
for(var
i=0;i<powers.length;i++){
Ext.getCmp('form').add(powers[i]);
}
就可以了
不知楼主懂没懂。。。。
加上布啊局的话就自己想办法了,将上面的例子简单修改皆可以
当然也可以不创建类,直接把权限拼成一个字符串,然后再前台接受并解析,转化成数组
循环数组
for(var
i=0;i<powers.length;i++){
Ext.getCmp('form').add(new
Ext.Checkbox({}));
}
Checkbox里面的设置
就不用我所了吧
我这里没有代码
忘记了Ext.Checkbox有没有了
反正是这个意思,勿要吹毛求疵
,希望对你有帮助
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
WIN7不会自动安装AHCI驱动是怎么回事?每次重装系统后都得我自己安装_百... 钉钉录播课能否查看观看时长 为什么城市轨道要有身高条件 城轨交通运营管理专业现身高吗 城市轨道交通运营管理这个专业是否有身高要求 读城轨专业需要什么条件 学习城轨专业需要什么条件? 城市轨道专业最低的身高要求多少?身高158毕业出来好找工作吗? 城轨专业要求身材吗 城轨专业有身高限制吗 花呗一般是什么号码来短信呢- 问一问 刚开始学extjs但是很迷茫,甚至不知道extjs是什么。我想在myeclipse下搭... extjs2.0将后台传来的字符串中的特定值进行替换 办的新手机号老是来短信提醒我还花呗!而且短信中还不是我的名字,是别人... ExtJs2.0 与 ExtJs3.0的主要区别有哪些? 怎么获得Extjs表格选中的值 extjs怎么获取后台的数据或者是变量。。。求大神速回? extjs框架工作原理 谁能帮我介绍一下extjs? 高分悬赏EXTJS学习方法和经验 ExtJS 2.0实用简明教程之应用ExtJS 小米手环没有充满电可以拔掉充电器吗 电信星卡里面的今日头条系里面的抖音短视频包括极速版吗? 火山小视频,是今日头条?抖音也是?快手 摩托罗拉手机v3i的R47A_G_08.D8.35R版本是不是很老啊 摩托罗拉A1200E怎样查看手机版本 谁知道我手机摩托罗拉是什么版本。 摩托罗拉ME525各个版本区别 关于摩托罗拉 V3的版本 摩托罗拉手机是移动还是电信版本的 如何获得ExtJS中嵌入HTML中的元素,取值或设值? extjs如何获取Grid中某一行某一列的值 extjs怎么获取元素节点 extjs获取值 学习EXTJS ExtJS 的问题 ExtJS的问题,希望解答。 霸气十足的句子有哪些? 表示自己重新归来的霸气句子有哪些? 怎么去掉wps表格自动求和系统自动框选的求和范围 wps表格自动求和表格怎么取消 wps表格中一点进去就是自动求和的页面怎么取消呢 什么阅读器可以看ceb格式和pdf FRM(金融风险管理师)就业前景!!有谁知道 ,给我解答一下,谢谢 mac os或iOS上有没有可以浏览ceb文件的软件 wps表格拷贝的值是自动求和的,放到新的表格单元格会自动把前两列的值求和,怎么去除效果 金融风险管理师的前景 WPS OFFICE是否支持方正CEB文件? FRM金融风险管理师就业情况怎么样 cebx需要用什么软件才能打开