Toon posts:

[DateTexBox] Start met 1970 datum

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0Henk '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:
  • 0Henk '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:
  • 0Henk '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:
  • 0Henk '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:
  • 0Henk '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:
  • 0Henk '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:
  • 0Henk 'm!

Anoniem: 381305

Topicstarter
Oké dank je wel Terminal13 :)

Acties:
  • 0Henk '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]


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


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee