2013-05-13 52 views
0

我在Sencha touch 2.1中创建了一个选择器。我的数据正常显示。我想禁用一个特殊的值不全是这样,如果我选择该值并点击“10 doneButton”,那么它不应该被采用。如何在Sencha touch中禁用Picker中的特定行

例子:

function loadPicker(paramName, valueSet) { 
    Ext.Viewport.remove(Ext.getCmp(paramName + 'Pickerfield'), true); 
    if (!paramName.picker) { 
     paramName.picker = Ext.Viewport.add({ 
      xtype: 'picker', 
      id: paramName + 'Pickerfield', 
      useTitles: true, 
      slots: [{ 
       name: paramName, 
       title: paramName, 
       data: valueSet 
      }], 

      doneButton: { 
       listeners: { 
        tap: function(button, event, eOpts) { 
         var selectedPacingModeValue = 
          Ext.getCmp(paramName + 'Pickerfield').getValue()[paramName]; 
         sendSetPendingRequest(paramName, selectedPacingModeValue); 
        } 
       } 
      } 
     }); 
    } 
} 

让我们这些都是我选择器字段中的值。我正在做的选择一个值,然后点击“doneButton”,我在文本框中显示值。我要的是,如果我将选择“选项2”,然后单击“doneButton”然后选项2不应显示在文本字段但对于所有其他值这个选择,并显示在文本框的操作应该工作。

+0

它不是真正清楚你...有选择字段,文本字段和广告一个按钮?你想要在文本框中显示一些选项(没有禁用标志),有些不显示在文本框中(带有禁用标志)?你不能只是得到选定的记录,并点击完成按钮时检查该标志,然后移动到文本框(或不)? – VDP 2013-05-13 07:41:12

+0

我有一个文本框和一个完成按钮的选择器。是的这正是我想要按照残疾人标志所做的事情。 – Fabre 2013-05-13 07:42:36

+0

我会制定一个答案的例子;) – VDP 2013-05-13 07:44:01

回答

1

您只需点击完成按钮即可获取所选记录并检查该标记,然后移至文本框(或不)。

Ext.create('Ext.form.Panel', { 
    fullscreen: true, 
    items: [ 
     { 
      xtype: 'fieldset', 
      title: 'Select', 
      items: [ 
       { 
        xtype: 'selectfield', 
        itemId: 'mySelectField', 
        label: 'Choose one', 
        options: [ 
         { 
          text: 'apple', 
          value: 50 
         }, { 
          text: 'orange', 
          value: 100, 
          disabled: true 
         }, { 
          text: 'banana', 
          value: 200 
         }, { 
          text: 'papaya', 
          value: 300 
         } 
        ] 
       }, 
       { 
        xtype: 'button', 
        text: 'done', 
        handler: function(button){ 
         var panel = button.up(), 
          sf = panel.down('#mySelectField'), 
          tf = panel.down('#answerfield'); 

         /* you can only access the raw value unless you use 
         * an actual store and an actual model with the 
         * disabled field. In that case you can do 
         * sf.getRecord().get('disabled') 
         */ 
         if(sf.getRecord().raw.disabled === true){ 
          tf.setValue(''); //noting to see :) 
         } else { 
          tf.setValue(sf.getRecord().get('text')); //display value 
         } 
        } 
       }, 
       { 
        xtype: 'textfield', 
        itemId: 'answerfield', 
        title: 'answer' 
       } 
      ] 
     } 
    ] 
}); 

工作小提琴:http://www.senchafiddle.com/#d46XZ

UPDATE 就像你问:与选择器

Ext.Loader.setConfig({ 
    enabled: true 
}); 

Ext.application({ 
    name: 'SenchaFiddle', 

    launch: function() { 
     var picker = Ext.create('Ext.Picker', { 
      slots: [ 
       { 
        name : 'stuff', 
        title: 'Stuff', 
        data : [ 
         { 
          text: 'apple', 
          value: 50 
         }, { 
          text: 'orange', 
          value: 100, 
          disabled: true 
         }, { 
          text: 'banana', 
          value: 200 
         }, { 
          text: 'papaya', 
          value: 300 
         } 
        ] 
       } 
      ], 
      listeners: { 
       change: function(p, value){ 
        var tf = panel.down('#answerfield'), 
         firstSlot = p.getItems().get(1), //index 0 is the toolbar 1 first slot and so on.. 
         selectedRecord = firstSlot.getData()[firstSlot.selectedIndex]; 
        if(selectedRecord.disabled === true){ 
         tf.setValue(''); //noting to see :) 
        } else { 
         console.log(selectedRecord); 
         tf.setValue(selectedRecord.text); //display value 
        } 
       } 
      } 
     }); 
     var panel = Ext.create('Ext.form.Panel', { 
      fullscreen: true, 
      items: [ 
       { 
        xtype: 'fieldset', 
        title: 'Select', 
        items: [ 
         { 
          xtype: 'button', 
          text: 'show picker', 
          handler: function(button){ 
           Ext.Viewport.add(picker); 
           picker.show(); 
          } 
         }, 
         { 
          xtype: 'textfield', 
          itemId: 'answerfield', 
          title: 'answer' 
         } 
        ] 
       } 
      ] 
     }); 


    } 
}); 

工作小提琴:http://www.senchafiddle.com/#SFgpV

+0

这真是一个很好的例子VDP。但我的代码有点不同。我正在动态获取我的值,而且我没有使用selectfield ...我已经编辑了上面的示例中的工作代码... plz查看它 – Fabre 2013-05-13 09:46:41