一个列表GridPanel,里面是一些员工的信息,点击查看或修改的时候,会有一个FormPanel显示出来,FormPanel里面会有一个或多个Panel用来显示员工的照片或其他图片。
现在我是这样做的,GridPanel上的sm加一个listeners,selectionchange的时候其中一个PhotoPanel这样操作如下var sm = new Ext.grid.CheckboxSelectionModel({
        listeners:{
       selectionchange:function combovalue()
    {
     if(sm.getCount()!=0)
     {
     GROUPID=sm.getSelected().get('groupId');
     //FrontPhoto.load({html:"<img src='FrontPhotoAction?groupid="+GROUPID+"'">});
     //FrontPhoto.html ="<img src='FrontPhotoAction?groupid="+GROUPID+"'>";
     //FrontPhoto.load();
                                             //FrontPhoto.load({url:'FrontPhotoAction?groupid='+GROUPID});
                                             //以上的都不行
                                ……………………
下面这2个网上说的比较多,用load
FrontPhoto.load({url:'FrontPhotoAction?groupid='+GROUPID});
FrontPhoto.load({html:"<img src='FrontPhotoAction?groupid="+GROUPID+"'">});
但这样会提示   无效的过程调用或参数
请高手指教怎么实现这个功能

解决方案 »

  1.   

    _panel.load(){
        url::'必须是一个页面eg:jsp/php/...'
    //}
      

  2.   

    方法有几种
    1、为panel设置背景样式,icon,iconCls也是可以的
    2、html: "<iframe src='a.html'/>" a.html显示一张图片
    3、为panel添加一个Filed,设置inputType: "image"
    var panel = new Ext.Panel({
         title: "图片"
         items: [{
             xtype: "field",
             inputType: "image"//这个是关键,还没有完
         }],
         listeners: {
              "beforerender": function () {//也可以用beforeshow事件
                    var imgField = this.items.itemAt(0);
                    imgField.getEl().dom.src = "img.jpg";//注意路径
              }
         }
    });
    /*or panel.items.itemAt(0).getEl().dom.src = "img.jpg";*/
    4、用DomHelper动态创建dom标签img建议用第三种方法
      

  3.   

    我的图片是存在数据库的二进制流的,存放在一个页面或一个action里面的,用html:'页面或action',当页面第一次加载的时候会去到对应的页面或action读取照片,但listeners可以改变panel里的某个属性,但不会再次进去页面或对应的action读取!
      

  4.   

    改变属性是 改变一下图片请求路径xxx.src='请求地址(新参数)'
      

  5.   


    var panel = new Ext.Panel({
         title: "图片"
         items: [{
             xtype: "field",
             inputType: "image"//这个是关键,还没有完
         }],
         listeners: {
              "beforerender": function () {//也可以用beforeshow事件
                    var imgField = this.items.itemAt(0);
                    imgField.getEl().dom.src = "yourActin.actoin";//注意路径
              }
         }
    });
    /*or panel.items.itemAt(0).getEl().dom.src = "yourActin.actoin";*/
    将地址改成action即可
      

  6.   

    IBM_hoojo  昨天你的回复我刚就试了下,提示  getEl().dom为空或不是对象!
      

  7.   

    如果能改变src的话,道理也一样的应该,
    我把panel放到一个window里面,点“修改”按钮   window就显示出来,这时候会进到action读取,之后点击window右上角的“X”关掉window,当把action修改了之后再点“修改”按钮,window.show(),这时候不会再去scr里的新的action里读取了!
      

  8.   

    还想到个办法,就是点“修改”按钮的时候执行一次ajax提交,可以去到二进制的数据,但这样都怎么放到panel里去呢!!??好多天了哇