2010-05-07 6 views
1

Comment mettre en évidence la date particulière dans le calendrier ExtJS (Date Heure Picker) contrôle,Extjs Date Heure Picker, date au lieu des points forts de la date du système

Par défaut, il mettra en évidence la date du système lorsqu'il affiche. J'ai besoin de mettre en surbrillance la date en tant que date du serveur sql car elle sera différente.

Existe-t-il des propriétés ou des méthodes de remplacement pour modifier la date de surbrillance?

Remarque: Sélectionnez uniquement dans le calendrier pour ne pas définir cette valeur sur la zone de texte.

+0

Je ne pense pas que je comprends ce que vous essayez de faire. De quel «textfield» parlez-vous? À moins que vous ne parliez du contrôle 'datefield'? – Chau

Répondre

2

Vous n'avez pas mentionné la version d'ExtJS que vous utilisez, mais je suppose que c'est 3.x.

Ce que vous demandez n'est pas très facile. Vous devez remplacer la méthode update de la classe Ext.DateField, car la mise en évidence est effectuée dans cette fonction.

La classe de style x-date-today est affectée à la cellule qui a la date actuelle. Elle ajoute la bordure rouge autour de la date actuelle, etc. Si vous voulez simplement vous débarrasser complètement de la surbrillance, pensez à remplacer la définition de style de cette classe .

MISE À JOUR: Rechercher cette ligne de code particulier:

today = new Date().clearTime().getTime(), 

Un peu plus loin de là la variable today est utilisée dans setCellClass fonction pour déterminer si la date choisie est « aujourd'hui » (et si il devrait être mis en évidence). Donc vous voudriez assigner une valeur différente à la variable today, dans votre méthode de remplacement.

+0

Salut, thnk pour la pointe, je vais essayer et revenir à vous, et j'utilise la version 3.x seulement – vineth

+0

tommi, pouvez-vous spécifier dans quelle fonction et le fichier (js/css), dans lequel ils affectent le currentdate à cette variable x-date-today – vineth

+0

Ajouté un peu plus de détails. Le fichier à regarder est probablement ext-all.js. – Tommi

1

Je ne trouve rien dans la documentation sur l'initialisation du contrôle DatePicker avec une date présélectionnée.

Mais vous pouvez faire quelque chose comme ce qui suit:

xtype: 'datepicker', 
listeners: 
{ 
    render: function(control) { 
     control.setValue(new Date('1/10/2007')); 
    } 
} 

Je ne sais pas quel événement est le plus approprié pour ce genre d'initialisation, mais l'événement render fonctionne pour moi :)

Heureux Ext'ing.

+0

hi chau: méthode setValue définit cette valeur pour ce champ de texte ... mais je dois mettre en évidence uniquement sur le contrôle calendrier. – vineth

+0

salut, j'utilise le contrôle de champ de date seulement, mais ils utilisent la base comme DatePicker comme vous l'avez mentionné. comment nous définissons "aujourd'hui" pour mettre en évidence la date dans DatePicker comme tommi mentionné dans datefield. – vineth

+0

@Vineth: N'est-ce pas ce que j'ai décrit dans mon autre réponse à cette question? – Chau

2

Si votre question est: Comment définir une date différente dans le calendrier d'un contrôle DateField?

Si vous initialisez le contrôle DateField avec votre date personnalisée , le buildin DatePicker utilisera cette valeur comme la date en surbrillance.

{ 
    xtype: 'datefield', 
    value: '2011-02-28' 
} 

Voir le fichier source pour Ext\src\widgets\form\DateField.js dans la méthode suivante:

/** 
* @method onTriggerClick 
* @hide 
*/ 
// private 
// Implements the default empty TriggerField.onTriggerClick function to display the DatePicker 
onTriggerClick : function(){ 
    if(this.disabled){ 
     return; 
    } 
    if(this.menu == null){ 
     this.menu = new Ext.menu.DateMenu({ 
      hideOnClick: false, 
      focusOnSelect: false 
     }); 
    } 
    this.onFocus(); 
    Ext.apply(this.menu.picker, { 
     minDate : this.minValue, 
     maxDate : this.maxValue, 
     disabledDatesRE : this.disabledDatesRE, 
     disabledDatesText : this.disabledDatesText, 
     disabledDays : this.disabledDays, 
     disabledDaysText : this.disabledDaysText, 
     format : this.format, 
     showToday : this.showToday, 
     minText : String.format(this.minText, this.formatDate(this.minValue)), 
     maxText : String.format(this.maxText, this.formatDate(this.maxValue)) 
    }); 
    this.menu.picker.setValue(this.getValue() || new Date()); <--- LOOK HERE!!! 
    this.menu.show(this.el, "tl-bl?"); 
    this.menuEvents('on'); 
}, 

Mais encore une fois, je ne suis pas sûr que je comprends votre question :)