为什么ext combox 下拉框不出现自动提示/自动选中

本文介绍如何使用 Extcombox 控件实现类似百度搜索提示的功能。关键在于禁用分页功能并设置 mode 属性为 local,同时需手动加载 store。适合希望改进用户输入反馈体验的开发者。

ext combox 如果想实现类似于 baidu 搜索时的提示功能。必须禁止其分页功能才可以。看代码

  var comboxContractType = new Ext.form.ComboBox({
   name:'logisticsId',
         fieldLabel:'物流公司',
         displayField:'logisticsName',
         valueField:'logisticsId',
         emptyText:'请选择',
         width:330,
         editable:true,
         allowBlank:false,
         mode:'local',
         loadingText:'loading...',
         hiddenName:'logisticsId',
         //pageSize:10,
         selectOnFocus: true,
         triggerAction:'all',
         store:comboxContractTypeStore = new Ext.data.JsonStore({
    url:'/pcms/dictionary/logistics.do?method=findLogistics',
    root:'Datas',
    totalProperty: 'TotalRecords',
    fields:[
     {name:'logisticsId', mapping:'logisticsid'},
     {name:'logisticsName', mapping:'shortname'}
    ]
   })
  });
  comboxContractTypeStore.load({params:{start:0,limit:100}});

 

注意3点:

别设置 PageSize 属性

mode属性设置为local 本地模式

最后要手动将用到的stroe进行load操作. stroe.load();

另外,这种方式其实只是简单的匹配, 如果要坐到模糊检索,需要用到ext store 的 query

在MFC(Microsoft Foundation Classes)中,COMBOBOX控件的下拉列表默认行为是在打开时自动选择第一项。如果你希望修改这种默认行为,使得在下拉列表打开时自动选择第一项,你可以通过编程方式在消息映射中处理CB_SHOWDROPDOWN消息。 具体来说,当COMBOBOX控件的下拉列表被用户打开时,会发送CB_SHOWDROPDOWN消息给控件。你可以捕获这个消息,并在消息处理函数中设置一个标志,用来指示应该自动选择第一项。然后,在控件的下拉列表更新完毕后,即在CBENCH消息处理函数中,检查你之前设置的标志,根据标志的值决定是否需要取消对第一项的选择。 以下是示例代码: ```cpp // 假设m_bDontSelectFirst是用来指示是否自动选择第一项的成员变量 bool CYourComboBox::m_bDontSelectFirst = false; BEGIN_MESSAGE_MAP(CYourComboBox, CComboBox) // ... 其他消息映射 ... ON_WM_SHOWDROPDOWN() ON_WMENCH() END_MESSAGE_MAP() void CYourComboBox::OnShowDropDown() { // 在下拉列表打开前设置标志 m_bDontSelectFirst = true; CComboBox::OnShowDropDown(); } void CYourComboBox::Onench() { if (m_bDontSelectFirst) { // 取消对第一项的选择 SetCurSel(-1); // 重置标志 m_bDontSelectFirst = false; } CComboBox::Onench(); } ``` 在这个示例中,`m_bDontSelectFirst`成员变量用来指示是否在下拉列表打开时选择第一项。`OnShowDropDown`函数在下拉列表打开前被调用,设置标志。`Onench`函数在下拉列表打开并且控件内容更新后被调用,它会检查标志,并取消对第一项的选择。 请注意,具体实现可能会根据你的应用程序和需求有所同。你可能需要根据实际情况调整上述代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值