如何在sencha的下拉列表中应用过滤器

时间:2013-10-10 11:23:36

标签: sencha-touch

我有两个下拉预约。一个是“从时间”,另一个是“到时间”。在下拉中有例如插槽。上午9点到11点和下午1点到下午3点,所以当我选择第一个时段是上午9点到晚上11点,然后在“到时间”下拉时,我只能看到在第一个时段预约的可用时间,即9.15,10.15等所以现在我选择了从= 9.15到= 10.15的约会。现在我点击“从时间”下拉我能够看到所有可用的插槽,我不在这里做任何更改,但当我点击“时间”下拉我能够看到所有插槽时间是意外的我没有做任何改变,所以即使我做了任何改动,也应按照“从时间”下拉的方式应用预期的行为过滤器。

以下是我的代码

{
        xtype: 'selectfield',
        name: 'fromTime',
        id: 'fromTime',
        placeHolder: 'Select From Time',
        label: 'From:',
        labelWrap: true,
        store: 'DoctorLocationTimes',
        displayField: 'fromTime',
        valueField: 'fromTime',
        listeners: [
        {
          event: 'change',
          fn: function(){
            var fromTime, timeStore, index, record, docLocationid;            
            fromTime = Ext.getCmp('fromTime').getValue();
            timeStore = Ext.getStore('DoctorLocationTimes');
            timeStore.clearFilter();
            index= timeStore.find('fromTime', fromTime);
            if(index != -1){
              record = timeStore.getAt(index);
              docLocationid = record.get('docLocationWorkingHourid');
              timeStore.filter('docLocationWorkingHourid',docLocationid);
            }
          }
        },
        {
          event:'focus',
          fn: function(){
            var store = Ext.getStore('DoctorLocationTimes');
            store.clearFilter();
          }
        }
      ]
  }

正如你所看到我在“从时间”id的基础上应用过滤器。我再次删除过滤器,因为我想再次显示“从时间”下拉列表中的所有插槽。

1 个答案:

答案 0 :(得分:2)

我得到了答案。现在正在工作。

{
        xtype: 'selectfield',
        name: 'toTime',
        id: 'toTime',
        placeHolder: 'Select To Time',
        label: 'To:',
        labelWrap: true,
        store: 'DoctorLocationTimes',
        displayField: 'toTime',
        valueField: 'toTime',
        listeners: [
        {
          event:'focus',
          fn: function(){
            var fromTime, timeStore, index, record, docLocationid;            
            fromTime = Ext.getCmp('fromTime').getValue();
            timeStore = Ext.getStore('DoctorLocationTimes');
            timeStore.clearFilter();
            index= timeStore.find('fromTime', fromTime);
            if(index != -1){
              record = timeStore.getAt(index);
              docLocationid = record.get('docLocationWorkingHourid');
              timeStore.filter('docLocationWorkingHourid',docLocationid);
            }
          }
        }]
      }

我发现在“按时间”对焦点事件应用过滤器后,其按预期工作。