`

Extjs 的checkbox复选框案例 动态获取数据(json)

阅读更多
本项目用struts2框架 ,Extjs3.4


1.
jsp文件中引用js,大部分Ext代码写在js文件中。
jsp文件:

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title>指派角色</title>
    <link rel="stylesheet" type="text/css" href="css/ext/ext-all.css" />
   	<script type="text/javascript" src="js/ext/ext-base.js"></script>
	<script type="text/javascript" src="js/ext/ext-all.js"></script>

    <script type="text/javascript" src="js/ext/form/states.js"></script>
    <script type="text/javascript" src="js/ext/form/assign_role.js"></script>
    <link rel="stylesheet" type="text/css" href="css/ext/forms.css"/>

    <!-- Common Styles for the examples -->
<script type="text/javascript" src="js/ext/examples.js"></script>
<link href="css/ext/ext-patch.css"  type="text/css" rel="stylesheet"/>
</head>
<body>
<div id="grid"></div>
<input type="hidden" name="userid" id="userid" value='<s:property value="userid"/>'/>
<input type="hidden" name="user.username" id="user.username" value='<s:property value="user.username"/>'/>
</body>
</html>







2.  assign_role.js文件:


/*!
 * Ext JS Library 3.4.0
 * Copyright(c) 2006-2011 Sencha Inc.
 * licensing@sencha.com
 * http://www.sencha.com/license
 */

Ext.onReady(function(){

  var userid;
  var json='';
 Ext.Ajax.request({ 
              url: 'role_checkboxJson.action',
              params: {userid:document.getElementById('userid').value},
              method: 'POST',
              dataType:'json',
              success: function(response,options){
             json=Ext.util.JSON.decode(response.responseText); 
        
         var checkGroup = new Ext.form.FieldSet({
        xtype: 'fieldset',
        title: '授权'+ (document.getElementById('user.username').value?'('+document.getElementById('user.username').value+')':''),
        autoHeight: true,
        layout: 'form',
    //    collapsed: true,   // initially collapse the group
        collapsible: true,
        items: [{
            id:'cc',
            xtype: 'checkboxgroup',
            fieldLabel: '选择角色 ',
            name:'FileItype',
            // Distribute controls across 3 even columns, filling each row
            // from left to right before starting the next row
            columns: 4,
            items:json
        }]

    });   
        	  
        
    var asignResource_form = new Ext.FormPanel({
    //    title: '指派资源',
        frame: true,
        labelWidth: 110,
        width: 600,
        renderTo:'grid',
    //    bodyStyle: 'padding:0 10px 0;',
        items: [
     checkGroup
        ],
        buttons: [{
            text: '授权',
            handler: function(){
          var FileItype=asignResource_form.getForm().findField('FileItype').getValue();
          var as=[];
          for(i=0;i<FileItype.length;i++)
            {
            as[i]=FileItype[i].inputValue;
            }
     //     alert(as);
             if(asignResource_form.form.isValid()){        
              //提交到服务器操作
                 asignResource_form.form.doAction('submit',{
                            url:'assignRole.action',//文件路径
                            method:'post',//提交方法post或get 
                            params:{userid:document.getElementById('userid').value},    
                            //提交成功的回调函数
                            success:function(form,action){
                                 if (action.result.success==true) {
                                  Ext.Msg.alert('指派成功',action.result.msg);
                                  //刷新父窗口、关闭本窗口
                                   var win2 = parent.Ext.getCmp('win');
                                   if (win2) {win2.close();}   
                                //  window.parent.location.href='userGrid.action';
                               //   window.close();
                                 // window.document.location='roleGrid.action';
                                 } else {
                                    Ext.Msg.alert('指派错误',action.result.msg);
                                 }
                            },
                            //提交失败的回调函数
                            failure:function(){                           
                                 Ext.Msg.alert('错误','服务器出现错误请稍后再试!');
                            }
                          });
           }
         //     alert(Ext.get('resources').dom.value );
            }}
        ,{
            text: '重置',
            handler: function(){
            asignResource_form.getForm().reset();
            }
        },{//因为我这个窗口,是放在了某个界面弹出的win窗口,
             //点击关闭可关闭弹出的窗口,在单独的页面是不执行的。
            text: '关闭',
            handler: function(){
                 var win2 = parent.Ext.getCmp('win');
            if (win2) {win2.close();}         
            }
        }]
    });
           
            }
          });  

    // turn on validation errors beside the field globally
    //显示验证错误的位置,改为旁边
    Ext.form.Field.prototype.msgTarget = 'side';

});




3. 'role_checkboxJson.action'连接对应的方法,传递了一个userid值,根据值判断复选框状态,若此用户已经选择了,则页面显示勾选,checked=true
手写生成json格式数据:

public String RoleCheckBoxJson(int userid) {
		if(userid==0){
			return null;
		}
		List<Role> roles = ((RoleMapper) mapper).getRolesByUserId(userid);
		List<Role> allroles= ((RoleMapper)mapper).getAllRoles();
		System.out.println(roles.size());
		for(int j=0;j<roles.size();j++){
			System.out.println(roles.get(j).getId());
		}
		if(roles==null){
			return null;
		}  //[{boxLabel: 'Item 2', name: 'resource_id', inputValue : 2,checked: true},{}]
		StringBuilder sb = new StringBuilder();
		sb.append("[");
		for (int i = 0; i < allroles.size(); i++) {
			boolean flag=false;
			Role r = allroles.get(i);
			sb.append("{");
			sb.append("id:\'").append(i).append("\',");
			sb.append("boxLabel:\'").append(r.getNote()).append("\',");
			sb.append("name:\'").append("role_id").append("\',");
			sb.append("inputValue:\'").append(r.getId()).append("\',");
			for(int j=0;j<roles.size();j++){
				System.out.println(roles.get(j).getId());
				System.out.println(allroles.get(i).getId());
			  if(roles.get(j).getId()==allroles.get(i).getId()){
				  flag=true;
			  }				
			}
		   if(flag==true){
			   sb.append("checked:").append(true); 
		   }else{
			   sb.append("checked:").append(false); 
		   }
			sb.append("}");
			if (i < allroles.size() - 1) {
				sb.append(',');
			}
		}
		sb.append("]");
		return sb.toString();
	}


4.Json所得到的数据为:
[{id:'0',boxLabel:'XX管理员',name:'role_id',inputValue:'1',checked:true},{id:'1',boxLabel:'XX管理员',name:'role_id',inputValue:'3',checked:true},{id:'2',boxLabel:'XX管理员',name:'role_id',inputValue:'10',checked:false},{id:'3',boxLabel:'用户',name:'role_id',inputValue:'11',checked:false}]

其中,boxLabel为复选框对应文字,name为提交的参数名,inputValue为选项值。
  • 描述: 效果图
  • 大小: 13.2 KB
0
2
分享到:
评论

相关推荐

    ExtJs4 Checkbox tree

    ExtJs4 Checkbox Tree是基于ExtJs 4框架实现的一种特殊树形组件,它在传统的树形结构基础上增加了复选框功能。这种组件常用于需要用户多选树形数据的场景,比如权限设置、目录选择等。下面将详细介绍ExtJs4 Checkbox...

    无废话ExtJs 系统教程十九[动态复选框:RemoteCheckboxGroup]

    在本教程中,我们将深入探讨ExtJS中的"RemoteCheckboxGroup",这是一个用于处理远程数据源的动态复选框组件。这个组件通常用于显示从服务器获取的动态选项,它允许用户根据需要选择或取消选择多个选项,同时将这些...

    Extjs 点击复选框在表格中增加相关信息行

    首先,我们需要创建一个复选框组(CheckboxGroup)来显示可供选择的省份。在这个例子中,`$provinceCheckbox01`是一个复选框组,它通过监听`change`事件来响应用户的选择变化。 接下来,定义了一个名为`gridItems`...

    checkbox tree extjs2

    这个"checkbox tree extjs2"主题主要涉及如何在ExtJS 2版本中实现带有复选框功能的树形控件。 在ExtJS 2中,Checkbox Tree是基于TreePanel组件的扩展,它提供了一种可视化的方式,让用户可以多选树结构中的节点。这...

    ExtJS 下拉多选框lovcombo

    ### ExtJS 下拉多选框lovcombo:省份与城市级联选择实现 #### 背景介绍 在软件开发过程中,经常会遇到需要实现省份、城市等地理位置信息的级联选择功能的需求。对于前端开发者而言,如何高效地实现这一功能成为了...

    form表单加载复杂json数据

    它们可以包含各种字段,如文本框、复选框、下拉列表等。为了将复杂JSON数据加载到表单中,我们需要进行以下步骤: 1. **创建表单**:首先,你需要定义一个表单,指定其字段。这可以通过在表单配置中包含一系列`...

    Extjs下拉多选树

    8. **API配置**:使用ExtJS API可以进一步定制组件的行为,如设置默认展开级别(`rootVisible`)、禁用特定节点(`disabled`)、控制是否显示复选框(`checkbox`)等。 9. **交互设计**:优化用户体验是关键,如...

    ExtJS4中文教程2 开发笔记 chm

    Extjs4 带复选框的树(Checkbox tree) Extjs4 新的布局方式 Extjs4 锁定表头(Locking Grid)功能 Extjs4.0 MVC实例 Extjs4.0动态填充combobox数据 Extjs4中up()和down()的用法 ExtJS4学习笔记(一)---window的创建 ...

    Extjs chekboxtree PagingTreeLoader 多选、分页

    "Chekboxtree"是ExtJS中的一种特殊树形组件,它允许用户通过复选框选择树节点,这在需要对树结构数据进行批量操作或选择时非常实用。CheckboxTree.js文件可能包含了实现这种功能的核心代码,包括复选框的渲染、选中...

    extjs实例~~~

    `GridPanel_checkbox_分页例子.txt`很可能包含了一个示例,展示了如何在GridPanel中添加复选框选择功能,并结合分页控件实现数据的分页显示。 2. **Ext.data.Store**: Store 是EXTJS中用于存储和管理数据的类。它...

    ExtJS与.NET结合开发实例-殷良胜

    - **11CheckBoxTree.rar**:这是一个包含复选框功能的树形控件示例,展示了如何在ExtJS中实现树节点的多选操作,并与.NET后台进行数据同步。 - **16GridPanel2.rar**:展示了一个增强的网格面板,可能包括了行编辑...

    Extjs4使用要点个人整理

    3. **表单(Form)配置**:`ExtJS_Form配置.docx`可能包含表单字段的配置,如文本域(textfield)、下拉框(combobox)、复选框(checkbox)等。还会涉及表单验证、数据绑定和提交策略。 4. **树形控件(Tree)配置...

    extjs3.0 API 中英

    5. **表单组件**:ExtJS 3.0包含一系列强大的表单组件,如文本框(TextField)、复选框(Checkbox)、下拉列表(ComboBox)等,它们都支持验证和数据绑定。 6. **图表组件**:通过ExtJS的Charts模块,开发者可以...

    ExtJS4.2 tree 级联选择

    例如,我们可以使用`TreeSelectionModel`,并启用`checkboxes`属性来显示复选框,并通过`cascadeChanges`属性来实现级联选择。代码可能涉及到以下关键部分: 1. 创建TreePanel,并配置`selModel`: ```javascript ...

    ExtJS 制作个性表格

    通过以上步骤,我们可以创建一个包含图片、复选框、动态数据加载以及弹框提示的个性化表格。在实际应用中,可以根据需求调整样式、增加交互事件和其他高级功能。记得在你的项目中引用Ext JS库,并确保所有相关的CSS...

    ExtJSWeb应用程序开发指南(第2版)

    4.1.7 Ext.form.field.Checkbox复选框和Ext.form.field.Radio单选框 4.1.8 Ext.form.CheckboxGroup和Ext.form.RadioGroup 4.1.9 Ext.form.field.Trigger触发字段 4.1.10 Ext.form.field.Spinner微调字段 4.1.11 ...

    Extjs,Jquery,Dhtmlxtree之上的树

    | checkbox | 布尔 | 是否显示复选框。 | False | | method | 字符串 | 定义动画效果显示方式。 | post | | caseadeCheck | 布尔 | 是否启用层叠约束。 | True | | onlyLeafCheck | 布尔 | 是否仅对叶节点显示复选框...

    columntree

    3. **复选框支持**:结合"checkbox"标签,Columntree可以实现节点选择功能,这在批量操作或者多选筛选时非常有用。 4. **可定制化**:EXTJS允许开发者自定义节点样式、图标、事件处理等,满足各种视觉和交互需求。 5...

    EXTJS___API详解

    **Checkbox, Radio, HtmlEditor, TextField, NumberField, TextArea, TriggerField 类**:表单字段类,提供了各种输入控件,如复选框、单选按钮、富文本编辑器等。 EXTJS的API详尽且强大,这些只是其中一部分,...

Global site tag (gtag.js) - Google Analytics