justdoit1024 2009-08-24 00:40
浏览 159
已采纳

tabPanel里添加的组件EditorGridPanel显示数据失败

我动态添加其中一个tabPanel,使用autoLoad自动加载一个show.jsp文件。

其中show.jsp是含一个组件EditGridPanel,其显示server.xml中的内容。

单独打开show.jsp,显示正常,但将show.jsp的url作为动态添加的tabPanel的autoLoad的值时后,再打开那个tabPanel时,show.jsp中的EditGridPanel组件显示出来,但是数据不显示。

由于单独打开show.jsp显示一切正常,故原因应该出在动态添加tabPanel上,它的代码如下:

//添加树节点的单击事件    
docTreePanel.on('click',function(node,e){
        //判断标签页是否存在,若存在,激活此页,若不存在,则新建一个
        var mainTabPanel = Ext.getCmp("mainTabPanel");
        var exit = mainTabPanel.getItem(node.id);
        if(!exit){
        var tabPage = node.id;
        tabPage = mainTabPanel.add({
            id:node.id,
            height:710,
            title:node.text,
            autoLoad:{
                url:node.attributes.url,
                scripts:true
            },
        });
            mainTabPanel.doLayout(true); 
            mainTabPanel.setActiveTab(tabPage);
        }
        else{
            mainTabPanel.setActiveTab(node.id);
        }
        
    });

 

初学ext,希望大家指教。谢谢

 

 


问题补充:
感谢大家的回复,现在贴出show.jsp的代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- 处理文档类别的浏览、编辑、删除 -->
<html>
<head>
<title>文档类别浏览</title>
<link rel="stylesheet" type="text/css" href="../../extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="../../extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../extjs/ext-all.js"></script>
<script type="text/javascript">

Ext.onReady(function(){
Ext.QuickTips.init();
// shorthand alias
var fm = Ext.form;

//创建列
var cm = new Ext.grid.ColumnModel([
    {
       header: "ID",
       dataIndex: 'id',
       width: 100,
    },
    {
       id:'common',
       header: "名称",
       dataIndex: 'common',
       width: 250,
       editor: new fm.TextField({
           allowBlank: false
       })
    },
    {
       header: "价格",
       dataIndex: 'price',
       width: 250,
       align: 'left',
       editor: new fm.TextField({
           allowBlank: false,
       })
    }

]);

//创建数据记录
var Plant = Ext.data.Record.create([
        {name:'id',type:'string'},
       {name: 'common', type: 'string'},
       {name: 'botanical', type: 'string'},
       {name: 'price', type: 'float'},             // automatic date conversions

  ]);

// create the Data Store
var store = new Ext.data.Store({
    //自动加载数据
    autoLoad:true,
    // load using HTTP
    url: 'plants.xml',

    //数据解析器
    reader: new Ext.data.XmlReader({
           //重要,xml文件的对象节点名为Plant,如&lt;Plant&gt;..&lt;/Plant&gt;
           record: 'Plant'
       }, Plant),

    sortInfo:{field:'common', direction:'ASC'}
});

// 创建可编辑的表格面板
var grid = new Ext.grid.EditorGridPanel({
    store: store,
    cm: cm,
    renderTo: 'editorGrid-div',
    width:600,
    height:300,
    frame:true,
    clicksToEdit:1
});

});
</script>
</head>

<body>
<div id="editorGrid-div"></div>
</body>
</html>


此种方式比较拙劣,如不行,希望大家给出实现这种效果的思路,谢谢
  • 写回答

3条回答 默认 最新

  • iteye_10013 2009-08-24 08:44
    关注

    autoLoad其实是通过ajax把对应的页面请求response过来,填入到该页面的.
    1.执行js需要配置一个参数scripts:true
    2.[b]你请求的页面包含有ext的类库,请求过来后会导致原页面出问题.[/b]

    你可以用一个html为iframe的panel,改变src来实现.
    或者目标页面只是返回一段EditGridPanel的json实现,不要包含其他的东西

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度