Ext.onReady(function(){
new Ext.Viewport({
renderTo:'content',
layout: 'border',
items: [
{
xtype:'panel',
id:'fPanel',
title:'功能面板',
width: 300,
layout: 'border',
collapsible: true,
region: 'west',
items:createTabPanel('menuTab')
}
]
});
getSubPanel(0,Ext.getCmp('menuTab'));
}
function createTabPanel(pid){
var tPanel = new Ext.TabPanel({
id:pid,
activeTab: 0,
region: 'center',
enableTabScroll: true,
border:false,
html:'<img src="images/blue-loading.gif"/>正在加载...'
});
return tPanel;
}
function getSubPanel(sumID,panel){
// 通过DWR代理获取数据
dwrProxy.initTabPanel(function(data){
panel.body.dom.innerHTML = '';
items = eval(data);// 将json字符串转换成js对象
for(i = 0; i < items.length; i++){
panel.add(items[i]);
}
panel.setActiveTab(0);
panel.setHeight(document.body.clientHeight);
});
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="dwrProxy">
<param name="class" value="com.linkage.app.web.TabPanelAction" />
</create>
</allow>
</dwr>
package com.linkage.app.web;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.linkage.app.util.StringUtil;
import com.linkage.cop.dao.DBConnection;
public class TabPanelAction {
public String initTabPanel(){
StringBuffer jsonArray = new StringBuffer();
Connection conn = null;
try {
conn = DBConnection.getDBConnection();
String json = getGridTabPanel(conn, "0");
System.out.println(json);
jsonArray.append(json);
} catch (SQLException e) {
e.printStackTrace();
} finally{
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return jsonArray.toString();
}
/*
* 创建TabPanel
*/
private String createTabPanel(ResultSet rs, String id) throws SQLException{
StringBuffer tabPanel = new StringBuffer();
boolean flag = true;
tabPanel.append("{");
String[] names = {"xtype","id","enableTabScroll","border","activeTab","region","items","listeners"};
String[] values = {
"'tabpanel'",
getResultVal(id, flag),
"true",
"false",
"0",
"'center'",
"{items}",
"{"+getResultVal(rs, "listeners", !flag)+"}"
};
tabPanel.append(getJsonProperty(names, values));
tabPanel.append("}");
return tabPanel.toString();
}
/*
* 创建Panel,作为父TablePanel的成员,用于存放子TabPanel
*/
private String createPanel(ResultSet rs, String sumID) throws SQLException{
int i = 1;
boolean flag = true;
StringBuffer jsonObj = new StringBuffer();
jsonObj.append("{");
String[] names = {"xtype","id","title","items","layout"};
String[] values = {
"'panel'",
getResultVal(rs, i++, flag),
getResultVal(rs, i++, flag),
createTabPanel(rs, sumID),
"'border'"
};
jsonObj.append(getJsonProperty(names, values));
jsonObj.append("},");
return jsonObj.toString();
}
/*
* 创建Panel,作为TablePanel的成员,用于显示页面
*/
private String createPanel(ResultSet rs) throws SQLException{
int i = 1;
boolean flag = true;
StringBuffer jsonObj = new StringBuffer();
jsonObj.append("{");
String[] names = {"xtype","layout","id","title","html","listeners"};
String[] values = {
"'panel'",
"'fit'",
getResultVal(rs, i++, flag),
getResultVal(rs, i++, flag),
createIframe(getResultVal(rs, "panel_id", !flag), getResultVal(rs, i++, !flag)),
"{"+getResultVal(rs, i++, !flag)+"}"
};
jsonObj.append(getJsonProperty(names, values));
jsonObj.append("},");
return jsonObj.toString();
}
/*
* 创建iframe,在panel的html属性中用到
*/
private String createIframe(String id, String src) {
String str = "";
if (StringUtil.isNull(src)) {
str = "'<img src=\"images/blue-loading.gif\"/>正在建设中。。。'";
} else {
str = "'<iframe id=\"frame"+id+"\" scrolling=\"auto\" height=\"95%\" width=\"100%\" noresize src=\"'+ctx+'"+src+"\"></iframe>'";
}
return str;
}
/*
* 从数据库获取TabPanel的配置信息,然后将数据转换成json字符串
*/
private String getGridTabPanel(Connection conn, String sumID) throws SQLException{
StringBuffer jsonArray = new StringBuffer();
String sql = "select panel_id,panel_name,action_url,LISTENERS,(select decode(count(*), 0, 0, 1) from gis_panel_conf b where a.panel_id = b.sum_panel_id) isFolder from GIS_PANEL_CONF a where sum_panel_id = "+sumID+" and state='A' order by order_id";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
jsonArray.append("[");
while (rs.next()) {
StringBuffer jsonObj = new StringBuffer();
boolean isFolder = rs.getBoolean("isFolder");
if (isFolder) {
String panel = createPanel(rs, rs.getString("panel_id")+sumID);
String items = getGridTabPanel(conn, rs.getString("panel_id"));
panel = panel.replace("{items}", items);
jsonObj.append(panel);
} else {
jsonObj.append(createPanel(rs));
}
jsonArray.append(jsonObj);
}
if (jsonArray.length() > 1) {
jsonArray.deleteCharAt(jsonArray.length()-1);
}
jsonArray.append("]");
stmt.close();
rs.close();
return jsonArray.toString();
}
private String getResultVal(ResultSet rs, int columnIndex, boolean isChar) throws SQLException{
String val = rs.getString(columnIndex);
val = getResultVal(val, isChar);
return val;
}
private String getResultVal(String val, boolean isChar) throws SQLException{
if (StringUtil.isNull(val)) {
val = "";
} else {
if (isChar) {
val = "'"+val+"'";
}
}
return val;
}
private String getResultVal(ResultSet rs, String columnName, boolean isChar) throws SQLException{
String val = rs.getString(columnName);
val = getResultVal(val, isChar);
return val;
}
private String getJsonProperty(String[] names, String[] vals){
StringBuffer prop = new StringBuffer();
for (int i = 0; i < names.length; i++) {
if (!StringUtil.isNull(vals[i])) {
prop.append(names[i] + ":" + vals[i]);
prop.append(",");
}
}
String val = prop.toString();
if (val.endsWith(",")) {
val = val.substring(0, val.length() - 1);
}
return val;
}
}
CREATE TABLE "GIS_PANEL_CONF"
( "PANEL_ID" NUMBER(12,0) NOT NULL ENABLE,
"PANEL_NAME" VARCHAR2(50),
"SUM_PANEL_ID" NUMBER(12,0),
"ACTION_URL" VARCHAR2(100),
"STATE" VARCHAR2(100),
"COMMENTS" VARCHAR2(100),
"ORDER_ID" NUMBER(10,0),
"LISTENERS" VARCHAR2(200),
CONSTRAINT "PK_PANEL_ID" PRIMARY KEY ("PANEL_ID")
COMMENT ON COLUMN "GIS_PANEL_CONF"."PANEL_ID" IS '标签编码';
COMMENT ON COLUMN "GIS_PANEL_CONF"."PANEL_NAME" IS '名称';
COMMENT ON COLUMN "GIS_PANEL_CONF"."SUM_PANEL_ID" IS '上级标签编码';
COMMENT ON COLUMN "GIS_PANEL_CONF"."ACTION_URL" IS '链接';
COMMENT ON COLUMN "GIS_PANEL_CONF"."STATE" IS '状态(A:显示X:屏蔽)';
COMMENT ON COLUMN "GIS_PANEL_CONF"."COMMENTS" IS '备注';
COMMENT ON COLUMN "GIS_PANEL_CONF"."ORDER_ID" IS '排序用';
COMMENT ON COLUMN "GIS_PANEL_CONF"."LISTENERS" IS '标签事件,如:deactivate:function(){alert(123);},多个事件之间用逗号隔开';
- 描述: 表数据示例
- 大小: 57.4 KB
- 描述: 最后的效果
- 大小: 13.9 KB
分享到:
相关推荐
在EXT JS这个强大的JavaScript框架中,`Ext.TabPanel` 是一个非常重要的组件,它用于创建具有可切换页签的用户界面。在这个特定的例子中,我们关注的是一个扩展版的`Ext.TabPanel`,它增加了拖放(DragDrop)功能,...
在EXT JS这个强大的JavaScript库中,`...结合`ComponentLoader`或Ajax请求,可以灵活地加载HTML内容或动态创建EXT JS组件,实现丰富的交互功能。理解并熟练掌握这一特性,将有助于开发高效且响应迅速的Web应用。
- **更多组件**:除了MessageBox和Grid外,EXT还提供了大量的其他组件,如Form、Tree、TabPanel等,满足不同场景的需求。 - **使用方法**:通过实例演示如何在项目中引入并使用这些组件,提高开发效率。 #### 8. ...
这个库由Sencha公司开发,提供了丰富的组件、布局管理、数据绑定和强大的API,使得开发者可以创建交互性强、用户体验良好的网页应用。下面将详细讨论EXTJS 3.1.1中的关键知识点。 1. **组件系统**: EXTJS的核心是...
除了以上提到的内容外,ExtJS还提供了许多其他特性和组件,如`TabPanel`、`XTemplate`、`DataView`等。深入了解这些特性和组件可以帮助开发者更全面地掌握ExtJS框架。 总结来说,ExtJS是一个功能强大且易用的...
在本文中,我们将深入探讨`TreePanel`和`TabPanel`这两个重要的Ext JS组件,并讨论如何将它们结合在一起,以创建功能丰富的用户界面。`TreePanel`用于展示层次结构的数据,而`TabPanel`则提供了多标签页的功能,两者...
extjs动态添加tabpanel标签页支持pannel嵌入 逻辑代码在 MyWindow.js里面直接调用 方法 就可以
在本文中,我们将深入探讨ExtJS中的`Ext.TabPanel`组件,它是创建多标签界面的核心元素。`Ext.TabPanel`允许开发者在单个容器中组织多个面板或视图,每个面板都有自己的标题,并且可以通过标签页进行切换。让我们...
在 Tapestry 4.02 中封装 Ext 的 TabPanel,意味着开发者可以利用 Tapestry 的强类型、事件驱动和组件模型,结合 Ext TabPanel 的强大功能,以Java代码的方式创建和管理TabPanel。这使得在后端处理TabPanel的行为和...
如果标签页本身并没有定义`loader`对象,则可以通过动态创建的方式为其添加一个`TreeLoader`实例,以实现数据的加载和刷新。 #### 关闭当前标签页 关闭当前标签页是`TabPanel`常见的需求之一,可以通过如下方式...
在这个场景中,我们将深入探讨如何使用Ext.NET代码动态创建GridPanel,并在各种窗口中灵活展示。 1. **动态创建GridPanel**: 在Ext.NET中,动态创建GridPanel意味着在运行时根据需要生成组件。这通常涉及到在...
- **DataView**:数据展示组件,能动态渲染列表或网格中的数据。 - **DatePicker**:日期选择器,方便用户选择特定日期。 - **EditorGridPanel**:具备编辑功能的网格面板,适用于数据表格的编辑操作。 - **...
例如,`ext-3.1.1`目录下可能包含了`GridPanel`、`FormPanel`、`TabPanel`等预定义的组件,它们分别对应表格视图、表单和选项卡布局。 其次,Ext JS提供了优雅的API,使得开发者能够方便地与用户进行交互。例如,...
// 创建TabPanel var tabPanel = Ext.create('Ext.tab.Panel', { width: 600, height: 300, items: [ { title: 'Value Table', layout: 'fit', items: Ext.create('MyApp.view.MyGrid') } ] }).render...
在这个例子中,我们创建了一个名为`mainPanel`的TabPanel,其包含多个子面板,每个子面板都有自己的标题、布局和其他属性。通过`addTab`函数可以动态添加新的Tab,并且每个Tab都可以通过iframe加载不同的页面。 ...
1. **创建tabpanel** 首先,我们需要创建一个tabpanel实例,并配置其属性,如`activeTab`(默认激活的标签页)和`layout`(布局方式,通常为`card`)。 ```javascript Ext.create('Ext.tab.Panel', { renderTo:...
要创建一个 `tabPanel`,你需要先定义一个 `Ext.container.TabPanel` 实例。在JavaScript代码中,这通常会涉及创建一个新的对象,并配置相应的属性,如宽度、高度、边框等。 ```javascript var tabPanel = Ext....
创建TabPanel的示例: ```javascript var tabPanel = new Ext.TabPanel({ items: [{ title: 'Tab 1', content: '这是Tab 1的内容' }, { title: 'Tab 2', content: '这是Tab 2的内容' }] }); ``` 11. 表格...
ExtJS的TabPanel是其组件库中的一个核心组件,用于创建具有多个标签页的应用界面,每个标签页可以承载不同的内容。在本主题中,我们将深入探讨如何操作ExtJS的TabPanel,包括创建、添加、删除和切换标签页,以及...
TabPanel是ExtJS提供的一种布局管理器,它允许在一个容器中创建多个面板(Panels),每个面板有自己的标签,用户可以通过点击标签在不同的面板间切换。TabPanel可以方便地管理和展示大量的内容,尤其适合于构建复杂...