2011-11-19 1 views
7

をクリアするために、DateFieldのポップアップにボタンを追加します。どんな編集でも、それはポップアップを表示するので、日付を明確にすることは不可能です。ボタンTodayのようなポップアップに追加する方法はありますか?クリアを意味しますが、このフィールドの日付は00.00.00にリセットされますか?ExtJSの/煎茶は、私がDateFieldのを持っている日付

ありがとうございました。

答えて

3

DateFieldのgetPicker()メソッドを使用してExt.picker.Dateコンポーネント(カレンダーポップアップの表示を担当)への参照を取得できます。 ボタンのテキストを設定オプションtodayTextでカスタマイズし、selectToday()メソッドをオーバーライドしてクリックしたときの動作をカスタマイズすることができます。

(あなたはそれがあるとしてTodayボタンを維持し、代わりに別のボタンを追加したい場合は、それがExt.picker.dateをカスタマイズ/拡張することによって、あまりにも行うことができますが、それはもう少し複雑です。)

+0

は、私はすでにいくつかのメソッドを試し、1つの以上のボタンを追加する必要があるようだ...あなたの答えができます - コンポーネントを編集したり、新しいコンポーネントを作成したりする必要がありますか? –

+0

getPicker - 私はこれを見つけられません... ext 3/3/4、おそらくこの原因になります... –

3
calendar = ..... // find the calendar component 

clearDateButton = new Ext.Button({ 
    renderTo: calendar.el.child("td.x-date-bottom,true"), 
    text: "Clear Date", 
    handler: ...... 
}) 
+0

これは私にとって問題です。 Ext3.3.4 –

+0

'getPicker()'メソッドを使います。 – Thevs

+0

3.3.1 extjsはそれを持っていません...とにかく、私はメソッドを書き直すと、すべて今大丈夫です。 Tnxのヘルプ。 –

4

はこのような何かを試してみてください:

{ 
    xtype: 'datefield', 
    onTriggerClick: function() { 
     Ext.form.DateField.prototype.onTriggerClick.apply(this, arguments); 
     var btn = new Ext.Button({ 
      text: 'Clear' 
     }); 
     btn.render(this.menu.picker.todayBtn.container); 
    } 
} 

これは実装に非常に依存しますが、機能します。また、トリガーをクリックするたびに別のクリアボタンを表示しないようにフラグを立てる必要があります。

+0

興味深いアイデアですが、これを問題にしています。これは問題です。私はいくつかのmetdodを書き直す必要がありました。このアイデアを生かすためにshowRestプロパティを追加してください:) http://www.sencha.com/forum/showthread.php?106446 -ClearableDateField –

0

誰もがここでExtJSの4の小さなソリューションを探している場合は、私の提案です:

Ext.picker.Date.override({ 
     beforeRender: function() { 
      this.clearBtn = new Ext.button.Button({ 
       text: 'Clear', 
       handler: this.clearDate, 
       scope: this 
      }); 
      this.callOverridden(arguments); 
     }, 
     initComponent: function() { 
      var fn = function(){}; 
      var incmp = function(values, out){ 
       Ext.DomHelper.generateMarkup(values.$comp.clearBtn.getRenderTree(), out); 
       fn(values, out); 
      }; 
      if(this.renderTpl.length === undefined){ 
       fn = this.renderTpl.initialConfig.renderTodayBtn; 
       this.renderTpl.initialConfig.renderTodayBtn = incmp; 
      } else { 
       fn = this.renderTpl[this.renderTpl.length-1].renderTodayBtn; 
       this.renderTpl[this.renderTpl.length-1].renderTodayBtn = incmp; 
      } 
      this.callOverridden(arguments); 
     }, 
     finishRenderChildren: function() { 
      this.clearBtn.finishRender(); 
      this.callOverridden(arguments); 
     }, 
     clearDate: function(){ 
      this.fireEvent('select', this, ''); 
     } 
    }); 

Working ExtJS Fiddle

関連する問題