[DateTexBox] Start met 1970 datum

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 381305

Topicstarter
Helaas gaat iets fout met een DateTextBox in mijn pagina...

In een DataGrid is een veld met een cellType: "dojox.grid.cells.DateTextBox". Dit werkt prima.
Echter wat ik ook doe, de dropdown start altijd op 1-1-1970. Daarbij wordt deze waarde "standaard" ingevuld in het DataGrid terwijl deze nog niet gevuld is.

JavaScript:
1
<th field="ciStart" width="100px" editable="true" required="false" cellType="dojox.grid.cells.DateTextBox" formatter="formatDate" constraint="{formatLength: 'short', selector: 'date', datePattern: 'dd-MM-yyyy'}">Start</th>


De formatter ziet er alsvolgt uit:
JavaScript:
1
2
3
formatDate = function(inDatum){
    return dojo.date.locale.format(new Date(inDatum), this.constraint);
};


Wanneer ik de "inDatum" eruit haal, is de default waarde wel die van vandaag. Echter wanneer ik deze wil wijzigen wordt de standaard datum alsnog 1-1-1970. Waarom "inDatum" omdat ik deze zo terugvond in de API docu.

Snap niet zo goed waarom:
a: Er standaard een waarde op de Start TH wordt ingevuld terwijl deze niet in de Store staat.
b: Hoe ik de standaard datum van 1-1-1970 kan veranderen naar "vandaag".

Iemand tips hoe ik dit doen kan?

Thanks in advance!!!

Jeroen

Acties:
  • 0 Henk 'm!

Anoniem: 96523

Wat is de exacte waarde van "inDatum"?

Het kan namelijk zijn dat javascript niet begrijpt wat je erin zet, en dus de default waarde teruggeeft (namelijk 1-1-1970).

JavaScript:
1
2
3
4
5
6
// There are four ways of instantiating a date:

new Date() // current date and time
new Date(milliseconds) //milliseconds since 1970/01/01
new Date(dateString) // e.g. "October 13, 1975 11:13:00"
new Date(year, month, day, hours, minutes, seconds, milliseconds)

bron: w3schools

Acties:
  • 0 Henk 'm!

Anoniem: 381305

Topicstarter
Bedankt voor je reactie Terminal13.

Ik heb echter geen idee wat er in "inDatum" staat. Vond het zelf ook raar dat deze in de voorbeelden op de Dojo site worden genoemd, omdat deze ook niet wordt aangemaakt of aangeroepen :?

Wanneer ik echter de code van de format functie wijzig naar:
JavaScript:
1
2
3
formatDate = function(){
    return dojo.date.locale.format(new Date(), this.constraint);
};


Wordt het grid veld standaard gevuld met de datum van vandaag, dus dat lijkt goed te gaan.
Wanneer ik echter dubbelklik op het veld (om het te wijzigen), veranderd de datum gelijk naar 1-1-1970 en laat het DateTextBox menu mij een calender zien die start op 1-1-1970...

Acties:
  • 0 Henk 'm!

Anoniem: 96523

Ok, ik denk dat ik nu begrijp wat het probleem is...

Er is een variabel ("inDatum") die wordt gebruikt om de geselecteerde datum om te zetten naar een lokaal formaat (dus in Nederland "dd-mm-YYYY" en in de US "mm/dd/YYYY") in de functie "formatDate".

Omdat er initieel geen datum gezet is, wordt deze automatisch 1-1-1970, totdat je een datum selecteerd.


Oplossing: zet ergens bovenaan het script (voordat deze wordt uitgevoerd):
JavaScript:
1
var inDatum = new Date();


Dit zou je probleem moeten oplossen.

Acties:
  • 0 Henk 'm!

Anoniem: 381305

Topicstarter
Hmm... Ik ben bang dat dit nog niet de oplossing is.

1: Ik heb de code bovenaan gezet in het script, geen soelaas.
2: Hierna heb ik deze in de dojo.addOnLoad function gezet, geen solaas.
3: Hierna heb ik deze in de grid "opbouw" functie gezet, geen soelaas.
4: Ook heb ik deze in de format function gezet... met en zonder de "var" definitie ervoor, geen soelaas.

De waarde blijft na de dubbelklik terugkomen op 1-1-1970 :/
Zou de "default" waarde met djConfig gezet kunnen worden ofzo?

Daarbij, als ik de "inDatum" uit de functie var en new Date() haal, blijft de gekozen waarde ook niet opgeslagen. De format functie zou er dan bijna wel zo uit moeten zien:
JavaScript:
1
2
3
formatDate = function(inDatum){
    return dojo.date.locale.format(new Date(inDatum), this.constraint);
};

Echter veranderd de "var inDatum..." niets aan de uitwerking (mbt datum van vandaag) :/

Als ik overigens het "datePattern: 'dd-MM-yyyy'" stukje weghaal, veranderd dit ook de datum niet.
Het wordt alleen anders weergegeven :-)

[ Voor 7% gewijzigd door Anoniem: 381305 op 04-07-2011 16:27 ]


Acties:
  • 0 Henk 'm!

Anoniem: 96523

Helaas gaat mijn kennis mbt Dojo 0.0%, dus ik ben bang dat iemand met meer kennis je hierbij zal moeten helpen.

Ik zie in de documentatie overigens overal inDatum staan (mbt datums), dus ik denk dat het inderdaad een waarde is die ergens gezet kan worden in het framework. Al vind ik het vreemd dat dit niet standaard gebeurd.

Acties:
  • 0 Henk 'm!

Anoniem: 381305

Topicstarter
Oké dank je wel Terminal13 :)

Acties:
  • 0 Henk 'm!

Anoniem: 381305

Topicstarter
Het lijkt erop of de velden waar een datum in wordt gezet niet leeg zijn maar 'null' bevatten.
Hierdoor niet leeg zijn, en de datumvelden dus standaard op 1-1-1970 wordt gezet.

De json info voor het datagrid wordt opgehaald met een php to json scrippie. De mysql_fetch_array zorgt ervoor dat NULL wordt omgezet in een PHP NULL. Dit heb ik nu getracht te fixen door de NULL te vervangen voor "". Dit resulteert in een NaN-NaN-0NaN waarde, dit omdat er geen datum is. De dropdown begint nu wel op de huidige datum...

Iemand enig idee hoe ik de "default" waarde niet weer hoef te geven?

[ Voor 64% gewijzigd door Anoniem: 381305 op 05-07-2011 14:13 ]


Acties:
  • 0 Henk 'm!

Anoniem: 381305

Topicstarter
Gevonden...

Door het gebruik van deze functies wordt een standaard datum (in mijn geval 1-1-1970) weergegeven wanneer er _geen_ datum in het veld aanwezig is.


JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function getDateValue(){
    //Override the default getValue function for dojox.grid.cells.DateTextBox
    return dojo.date.stamp.toISOString(this.widget.get('value'));
};

function formatDate(inDatum) {
    //Format the value in store, so as to be displayed.
    var d = dojo.date.stamp.fromISOString(inDatum);
    return dojo.date.locale.format(d, {
        formatLength: 'short', 
        selector: "date", 
        datePattern: "dd-MM-yyyy"
    });
};


Misschien handig voor peeps die met hetzelfde probleem kampen :-)

Gr. Jeroen
Pagina: 1