2016-12-17 4 views
0

Je crée une application Web Forms asp.net. Si un utilisateur donne une mauvaise entrée, il affiche la validation. Mais, la deuxième fois que l'utilisateur donne une entrée correcte, le code fonctionne correctement, seul le problème est que le message d'erreur n'est pas supprimé.

Dans la page charge FonctionImpossible de masquer le panneau

pnlStatus.Visible = true; 

L'événement Button_Click est écrit ci-dessous

protected void btnAffRntGoClick(object sender, EventArgs e) 
{ 
    DateTime dtFrom = new DateTime(); 
    DateTime dtTo = new DateTime(); 
    bool dt1 = true; 
    bool dt2 = true; 
    int result; 

    if (DateTime.TryParse(txtStartDate.Text, out dtFrom) == false) 
    { 
     dtFrom = new DateTime(1900, 1, 1); 
     dt1 = false; 
    } 

    if (DateTime.TryParse(txtEndDate.Text, out dtTo) == false) 
    { 
     dtTo = new DateTime(2100, 1, 1); 
     dt2 = false; 
    } 
    result = DateTime.Compare(dtTo, dtFrom); 
    if ((dt1 == true && dt2 == true) && result > 0) 
    { 
     lblPageStatus.Text = string.Empty; 
     pnlStatus.Visible = false; 


     DataSet ds = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(), "SPNAME", 
     Convert.ToInt64(ddl.SelectedValue), dtFrom.Date.ToShortDateString(), dtTo.Date.ToShortDateString(), ddl2.SelectedValue, Chk1.Checked); 

     if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) 
     { 
// Code to generate Excel 
     } 
     else 
     { 
      pnlStatus.Visible = true; 
      lblPageStatus.Text = "No data available to export."; 
     } 
    } 
    else 
    { 
     pnlStatus.Visible = true; 
     lblPageStatus.Text = "Please Check the Dates"; 
    } 
} 

anyType d'aide sera appréciée.

Merci à l'avance

+0

Modifiez-vous les valeurs requises dans l'instruction if qui génère Excel? – Hayden

+0

certainement votre code doit être révisé par code –

Répondre

0

Réponse courte est Je suppose que vous avez seulement besoin de mettre à jour vos commandes en conséquence quand il y a des données.

if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) 
    { 
     // Code to generate Excel 
     pnlStatus.Visible = false; 
     lblPageStatus.Text = string.Empty; 
    } 
    else 
    { 
     pnlStatus.Visible = true; 
     lblPageStatus.Text = "No data available to export."; 
    } 

Réponse longue - votre code doit être nettoyé et alligned avec certaines normes pour atteindre readibility. Probablement c'est la raison pour laquelle tu t'es perdu. Des méthodes supplémentaires pourraient être introduites pour simplifier. Voici un aperçu rapide. En outre pnlStatus.Visible et lblPageStatus.Text pourraient être mis en un seul endroit avec une seule ligne de code (mais une lisibilité un peu plus compliquée).

choses à considérer:

  • Donnez les noms meaningfull à vos variables
  • Éviter la duplication de code (suivre DRY,KISS,YAGNI, utilisez extension methods)
  • rendre votre code le plus lisible car il est possible (ce qui signifie tout le monde pourrait lire votre code)

    private const string connectionString = 
    ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 
    
    protected void btnAffRntGoClick(object sender, EventArgs e) 
    { 
        var from = new DateTime(1900, 1, 1); 
        var to = new DateTime(2100, 1, 1); 
    
        var isValidStartDate = !DateTime.TryParse(txtStartDate.Text, out from); 
        var isValidEndDate = !DateTime.TryParse(txtEndDate.Text, out to); 
    
        var hasValidDates = isValidStartDate && isValidEndDate; 
        var hasDifference = DateTime.Compare(from, to) > 0; 
    
        var shouldCheckDates = !hasValidDates || !hasDifference; 
    
        if (shouldCheckDates) 
        { 
         pnlStatus.Visible = true; 
         lblPageStatus.Text = "Please Check the Dates"; 
         return; 
        } 
    
        DataSet ds = SqlHelper.ExecuteDataset(connectionString, 
         "SPNAME", 
         Convert.ToInt64(ddl.SelectedValue) 
         , @from.Date.ToShortDateString(), 
         to.Date.ToShortDateString() 
         , ddl2.SelectedValue 
         , Chk1.Checked 
        ); 
    
        var hasData = ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0; 
    
        pnlStatus.Visible = !hasData; 
        lblPageStatus.Text = hasData ? string.Empty : "No data available to export."; 
    
    }