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条)

报告相同问题?

悬赏问题

  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误