2016-12-17 15 views
0

Я делаю приложение ASP.NET ASP.NET. Если какой-либо пользователь вводит неверный ввод, он показывает подтверждение. Но во второй раз, когда пользователь дает правильный ввод, код работает правильно, только проблема заключается в том, что сообщение об ошибке не удаляется.

В загрузки страницы ФункцияНевозможно скрыть панель

pnlStatus.Visible = true; 

В Button_Click событие записывается Ниже

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 помощь будет оценена.

Заранее спасибо

+0

Вы изменяете требуемые значения в выражении if, который генерирует excel? – Hayden

+0

, конечно, ваш код должен быть проверен кодом –

ответ

0

Короткий ответ Я думаю, вам нужно только обновить элементы управления, соответственно, при наличии данных.

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."; 
    } 

Длинный ответ - код должен быть очищен и выровненным с некоторыми стандартами для достижения readibility. Вероятно, это причина, по которой вы потерялись. Для упрощения можно было бы ввести дополнительные методы. Ниже приведен краткий обзор. Дополнительно pnlStatus.Visible и lblPageStatus.Text могут быть установлены в одном месте с одной строкой кода (но немного более сложная читаемость).

Вещи рассмотреть:

  • Дайте Внушительные имена ваших переменных
  • дублирования кода
  • Избегайте (следовать DRY,KISS,YAGNI, используйте extension methods)
  • Сделайте свой код в максимально читаемым, как это возможно (означает, что любой мог читать ваш код)

    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."; 
    
    }