linjingqin 2009-08-04 09:35
浏览 206
已采纳

点击splitButton的menu里的item时,不要让它上拉上去

[img]http://i3.6.cn/cvbnm/58/27/cb/f01a39900b2a0d728a00e02f3c1d65de.jpg[/img]
如图,,但我点击labels这个splitButton里的那个add new label:下的textfield的时候(点击任何一个menu的item),不要让他上拉上去,而但鼠标点击外面的其他东西时,就上拉上去。这个怎么做?

里面的text1,text2,text3……是从数据库里捞出来的,你觉得用什么来装好呢?我的是用一个grid来装的,而且grid里加了个Ext.grid.CheckboxSelectionModel!
多谢了

我没有分了,分不够再加
[b]问题补充:[/b]
但是我的menu是这样写的哦

var menu= new Ext.menu.Menu({
items: [{text : 'Tag alarm(s) to:'},new Ext.menu.Adapter(grid),new Ext.menu.Adapter(searchpl)]
});

grid 是个grid,searchpl是个panel,
他们是不能加hideOnClick:false这个的呀,应该怎么做?
[b]问题补充:[/b]
很高兴再次遇到了你!
[b]问题补充:[/b]
我刚才按你说的那样做了,但还是不行哦,,
[code="js"]
Ext.namespace('Alarmprocessor.eventbrowser');

Alarmprocessor.eventbrowser.LabelsSplitButton=function(){

var grid = new Ext.grid.GridPanel({
    hideOnClick:false, 
    trackMouseOver:false, 
    store: new Ext.data.JsonStore({
        root : 'profileList',
        storeId : 'profileListStore',
        url : 'userprofile.do',
        baseParams : {
            method : 'getUserProfileList'
        },

        fields : ['config']
    }),
    columns: [{header: "label", dataIndex: 'labeltext'}],
    //sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
    hideHeaders :true,
    width:150,
    height:100
});
var searchText=new Ext.form.TextField({
   hideLabel :true
});
var searchpl=new Ext.Panel({
    hideOnClick:false, 
    layout:'column',
    items:[searchText,{html : '<img id="addbtn" width=25 heigth=30  src="images/add-btn.jpg"/>'}]
});

// onClick=addLabels()
// Ext.getCmp('addbtn').on('onclick',function(){
// addLabels();
// });
// function addLabels(){
// Ext.Msg.alert("test","testtt");
// };
// addTrigger.on('ontriggerclick',function(){
// Ext.Msg.alert("ok","abc");
// });
// var colLabelpl=new Ext.Panel({
// layout:'form',
// id:'allpalabels',
// items:[{text : 'Tag alarm(s) to:'},grid,'-',addTrigger]
// });
// var c = new Ext.Panel({
// id: 'allpalabels',
// items: {
// layout: 'form',
// border: false,
// items: [{text : 'Tag alarm(s) to:'},grid,'-',addTrigger]
// }
// });
var menu= new Ext.menu.Menu({
items: [{hideOnClick:false,text : 'Tag alarm(s) to:'},new Ext.menu.Adapter(grid),new Ext.menu.Adapter(searchpl)]
});
menu.on('itemclick',function(baseItem,e){
//Ext.getCmp('labelsplit').fireEvent("arrowclick", Ext.getCmp('labelsplit'), e);
Ext.getCmp('labelsplit').fireEvent("arrowclick", Ext.getCmp('labelsplit'), e);
//Ext.Msg.alert("aaa","bbbb");
});

Alarmprocessor.eventbrowser.AlarmStatusSplitButton.superclass.constructor.call(this, {
    text: 'Labels',
    id:'labelsplit',
    handler : function onButtonClick(btn) {
        Ext.Msg.alert('Button Click', 'You clicked the "{0}" button.',
                btn.text);
    },
    menu:menu
});

}
Ext.extend(Alarmprocessor.eventbrowser.LabelsSplitButton, Ext.SplitButton)
[/code]
代码是这样的
[b]问题补充:[/b]
效果是一样的,就是但点击里面的items的时候,就不会上拉,但点击边边的话,就上拉,其实这个不要紧,最重要的是
[code="js"] var searchText=new Ext.form.TextField({

hideLabel :true

});

var searchpl=new Ext.Panel({

hideOnClick:false,

layout:'column',

items:[searchText,{html : ''}] [/code]
点击这个textfield时不要让他上拉就行了,但是这个就是要上啦,加了hideOnClick:false还是一样,很感谢你!
[b]问题补充:[/b]
哦,,我再看看。。谢谢你!

  • 写回答

6条回答 默认 最新

  • iteye_10013 2009-08-04 12:18
    关注

    是定义的地方搞错了,应该是:
    new Ext.menu.Adapter(searchText,{hideOnClick:false})

    测试代码如下,本地测试通过
    [code="javascript"]
    function testSplitButton3(){
    var searchText=new Ext.form.TextField({

    hideLabel :true
    });
    var sm = new Ext.grid.CheckboxSelectionModel({});
    var grid = new Ext.grid.GridPanel({
    hideOnClick:false,
    width: 200,
    height: 200,
    autoScroll: true,
    trackMouseOver:false,
    sm:sm,
    hideHeaders:true,
    columns: [
    sm,
    //{header: '序号', dataIndex: 'id', sortable: true },
    //{header: '名字', dataIndex: 'name', sortable: true},
    {header: '描述', dataIndex: 'descript', sortable: true}
    ],
    viewConfig:{
    forceFit:true
    },
    store:new Ext.data.SimpleStore({
    fields:['id','name','descript'],
    data:[
    [1,'name001','this is name001'],
    [2,'name002','this is name002'],
    [3,'name003','this is name003'],
    [4,'name004','this is name004']
    ]
    })
    });
    var btn = new Ext.SplitButton({
    renderTo: document.body,
    text: 'Options',
    menu: new Ext.menu.Menu({
    items: [
    new Ext.menu.Adapter(searchText,{hideOnClick:false}),
    {
    text:'add label',
    hideOnClick:false
    },
    {text:'other'},
    new Ext.menu.Adapter(grid,{hideOnClick:false})
    ]
    })
    });
    }[/code]

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

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境