本项目用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
分享到:
相关推荐
ExtJs4 Checkbox Tree是基于ExtJs 4框架实现的一种特殊树形组件,它在传统的树形结构基础上增加了复选框功能。这种组件常用于需要用户多选树形数据的场景,比如权限设置、目录选择等。下面将详细介绍ExtJs4 Checkbox...
在本教程中,我们将深入探讨ExtJS中的"RemoteCheckboxGroup",这是一个用于处理远程数据源的动态复选框组件。这个组件通常用于显示从服务器获取的动态选项,它允许用户根据需要选择或取消选择多个选项,同时将这些...
首先,我们需要创建一个复选框组(CheckboxGroup)来显示可供选择的省份。在这个例子中,`$provinceCheckbox01`是一个复选框组,它通过监听`change`事件来响应用户的选择变化。 接下来,定义了一个名为`gridItems`...
这个"checkbox tree extjs2"主题主要涉及如何在ExtJS 2版本中实现带有复选框功能的树形控件。 在ExtJS 2中,Checkbox Tree是基于TreePanel组件的扩展,它提供了一种可视化的方式,让用户可以多选树结构中的节点。这...
### ExtJS 下拉多选框lovcombo:省份与城市级联选择实现 #### 背景介绍 在软件开发过程中,经常会遇到需要实现省份、城市等地理位置信息的级联选择功能的需求。对于前端开发者而言,如何高效地实现这一功能成为了...
它们可以包含各种字段,如文本框、复选框、下拉列表等。为了将复杂JSON数据加载到表单中,我们需要进行以下步骤: 1. **创建表单**:首先,你需要定义一个表单,指定其字段。这可以通过在表单配置中包含一系列`...
8. **API配置**:使用ExtJS API可以进一步定制组件的行为,如设置默认展开级别(`rootVisible`)、禁用特定节点(`disabled`)、控制是否显示复选框(`checkbox`)等。 9. **交互设计**:优化用户体验是关键,如...
Extjs4 带复选框的树(Checkbox tree) Extjs4 新的布局方式 Extjs4 锁定表头(Locking Grid)功能 Extjs4.0 MVC实例 Extjs4.0动态填充combobox数据 Extjs4中up()和down()的用法 ExtJS4学习笔记(一)---window的创建 ...
"Chekboxtree"是ExtJS中的一种特殊树形组件,它允许用户通过复选框选择树节点,这在需要对树结构数据进行批量操作或选择时非常实用。CheckboxTree.js文件可能包含了实现这种功能的核心代码,包括复选框的渲染、选中...
`GridPanel_checkbox_分页例子.txt`很可能包含了一个示例,展示了如何在GridPanel中添加复选框选择功能,并结合分页控件实现数据的分页显示。 2. **Ext.data.Store**: Store 是EXTJS中用于存储和管理数据的类。它...
- **11CheckBoxTree.rar**:这是一个包含复选框功能的树形控件示例,展示了如何在ExtJS中实现树节点的多选操作,并与.NET后台进行数据同步。 - **16GridPanel2.rar**:展示了一个增强的网格面板,可能包括了行编辑...
3. **表单(Form)配置**:`ExtJS_Form配置.docx`可能包含表单字段的配置,如文本域(textfield)、下拉框(combobox)、复选框(checkbox)等。还会涉及表单验证、数据绑定和提交策略。 4. **树形控件(Tree)配置...
5. **表单组件**:ExtJS 3.0包含一系列强大的表单组件,如文本框(TextField)、复选框(Checkbox)、下拉列表(ComboBox)等,它们都支持验证和数据绑定。 6. **图表组件**:通过ExtJS的Charts模块,开发者可以...
例如,我们可以使用`TreeSelectionModel`,并启用`checkboxes`属性来显示复选框,并通过`cascadeChanges`属性来实现级联选择。代码可能涉及到以下关键部分: 1. 创建TreePanel,并配置`selModel`: ```javascript ...
通过以上步骤,我们可以创建一个包含图片、复选框、动态数据加载以及弹框提示的个性化表格。在实际应用中,可以根据需求调整样式、增加交互事件和其他高级功能。记得在你的项目中引用Ext JS库,并确保所有相关的CSS...
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 ...
| checkbox | 布尔 | 是否显示复选框。 | False | | method | 字符串 | 定义动画效果显示方式。 | post | | caseadeCheck | 布尔 | 是否启用层叠约束。 | True | | onlyLeafCheck | 布尔 | 是否仅对叶节点显示复选框...
3. **复选框支持**:结合"checkbox"标签,Columntree可以实现节点选择功能,这在批量操作或者多选筛选时非常有用。 4. **可定制化**:EXTJS允许开发者自定义节点样式、图标、事件处理等,满足各种视觉和交互需求。 5...
### ExtJS核心API详解 #### 1. Ext 类 (P.2) - **概述**:`Ext` 是 ExtJS 的核心命名空间,包含了全局的方法和属性。 - **用途**:提供了一个统一的入口来访问 ExtJS 库的功能,如创建组件、管理事件等。 - **常用...
**Checkbox, Radio, HtmlEditor, TextField, NumberField, TextArea, TriggerField 类**:表单字段类,提供了各种输入控件,如复选框、单选按钮、富文本编辑器等。 EXTJS的API详尽且强大,这些只是其中一部分,...