2011-11-19 11 views
7

temizlemek için, DateField pop-up'a düğme ekleyin. Herhangi bir düzenlemede, açılır pencere gösterilir, bu nedenle herhangi bir tarih kesin değildir. Bugün gibi bir şey açmak için bir yol var mı, ama bu alanda hangi tarihten sonra 00.00.00 için yeniden belirlenir?ExtJS/Sencha'sı Bir DateField var tarih

Teşekkürler.

cevap

3

DateField'in getPicker() yöntemiyle Ext.picker.Date bileşenine (takvim açılır penceresini görüntülemekle sorumludur) başvuru alabilirsiniz. Daha sonra Today düğmesinin metnini todayText yapılandırma seçeneğiyle özelleştirebilir ve tıklatıldığında selectToday() yöntemini geçersiz kılarak özelleştirebilirsiniz.

(eğer olduğu gibi Today düğmeye tutmak ve bunun yerine başka bir düğme eklemek isterseniz, o/uzanan Ext.picker.date özelleştirerek de yapılabilir, ama biraz daha karmaşıktır.)

+0

ben zaten, bir daha düğme eklemek gerek birkaç yöntemleri deneyin görünüyor ... can Cevabınız - Bileşeni düzenleme veya yenisini oluşturma ihtiyacı var mı? –

+0

getPicker - bunu anlamıyorum ... ext 3/3/4, belki de bunun sebebi ... –

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

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

Bu benim için sorun - onu bulmak. Ext3.3.4 –

+0

'getPicker()' yöntemini kullanın. – Thevs

+0

3.3.1 extjs bunu sahip değil ... her neyse, yöntemleri yeniden yazabilirim ve her şey yolunda. Tnx yardım için. –

4

böyle bir şey deneyin:

{ 
    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); 
    } 
} 

Uygulamaya çok bağımlıdır, ancak çalışır. Ve bunu her seferinde tıklattığınız zaman başka bir net düğme oluşturmayacak şekilde işaretlemelisiniz.

+0

ilginç bir fikir, ama onu işaretleme - bu bir sorun, ben bu fikrin canlı yapmak için bir showRest özellik ekleyerek birkaç metdod yeniden yazma ihtiyacı vardı :) İşte burada http://www.sencha.com/forum/showthread.php?106446 -ClearableDateField –

0

kimse ExtJS burada 4 küçük çözümü için arama yapıyorsa benim öneri:

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

İlgili konular