2008-12-02 10 views
0

J'ai un programme de recherche qui examinera une base de données à partir d'une base de données. Si la plage de dates est supérieure à 3 semaines, je veux les avertir que cela peut prendre un certain temps avec toutes les données de la base de données. J'ai une boîte de confirmation dans une fonction JavaScript. Je veux vérifier la plage de dates dans la page aspx.cs. Comment puis-je modifier la boîte de message en fonction de ces critères? voici une copie de certains de mes codes sur html. Je ne sais pas comment aborder le point de contrôle.Comment basculer confirmer la boîte de message de aspx.cs page

function warning() {    
    var answer = confirm("The date range you have selected will return a substantial amount of data and will take some time to process.\n\nAre you sure you want to continue?"); 
    if (answer) 
     return true; 
    else 
     return false; 
} 
+0

Lulu - nous le savons tous est JavaScript, on n'a pas besoin de voir la balise de script inclus, il brouille les choses simplement. –

+0

Comment obtenez-vous votre plage de dates? Est-ce 2 boîtes de texte, un contrôle de calendrier, ??? –

Répondre

0

Si le bouton est un bouton d'envoi, puis l'ajouter à la onclick(). Une vraie valeur de retour permettra à la page de continuer à soumettre, et un faux arrêtera la publication (soumettre).

EDIT: Essayez-le avant de dire que ce n'est pas correct. Cela a l'air compliqué mais c'est assez simple. Obtenez la première date, Obtenez la deuxième date, comparez-les. S'il y a moins de 3 semaines de diff, renvoyez true et autorisez la page à poster (submit), sinon alertez l'utilisateur et renvoyez sa réponse.

La fonction ...

function warning() {    

    var ele; 
    var startDate; 
    var endDate; 
    var threeWeeksInMilliseconds = 1814400000; //1000 ms * 60 sec * 60 min * 24 hr * 21 days 

    //get starting value 
    ele = document.getElementById('txtStartDate'); 
    if (ele == 'undefined'){ 
     return false; //no start element 
    } 
    else { 
     try{ 
      startDate = new Date(ele.value); 
     } 
     catch (e) { 
      return false; 
     } 
    } 

    //get the ending value 
    ele = document.getElementById('txtEndDate'); 
    if (ele == 'undefined'){ 
     return false; //no start element 
    } 
    else { 
     try{ 
      endDate = new Date(ele.value); 
     } 
     catch (e) { 
      return false; 
     } 
    } 

    //getTime() returns milliseconds 
    if ((endDate.getTime() - startDate.getTime()) < threeWeeksInMilliseconds) { 
     return true; 
    } 
    //else present the message for confirmation. 

    var msg = "The date range you have selected will return a substantial " + "" + 
      "amount of data and will take some time to process.\n\n" + 
      "Are you sure you want to continue?"; 
    var answer; 

    answer = confirm(msg); 

    if (answer) { 
     return true; 
    } 
    else { 
     return false; 
    } 

    //default return condition - nothing should get here so this indicates an error. 
    //Use true if you want to allow this to process. 
    return false; 
} 
0

Pourquoi vérifier la plage de dates du côté du serveur? Si vous avez la plage de dates du côté client, c'est beaucoup moins de travail.

Sinon, vous devrez PostPack (ou partiellement après), puis vérifiez la plage de dates, puis rendre le javascript avertissement retour vers la page ...

Il est temps de repenser votre méthode.

+0

Merci, mais comment vérifiez-vous la portée sur le côté html? –

0

Vous feriez mieux de vérifier votre plage de dates côté client et de déclencher la boîte de message via JS avant d'appeler une publication.

+0

la chose est que je veux avoir le bouton de confirmation apparaître sur une certaine condition (c'est-à-dire si la date est plus de 3 semaines), pas à chaque fois que le bouton de recherche est cliqué. Alors qu'est-ce que je fais? Désolé pour la confusion –

2

Une boîte de confirmation pour aller de l'avant, apparaît lorsque le bouton est cliqué

SearchButton.Attributes.Add("onclick", "javascript:return " + "confirm('" + 
"The date range you have selected will return a substantial amount of data and will take some time to process.\n\nAre you sure you want to continue?')"); 
Questions connexes