2013-06-10 2 views
1

내 프로젝트에서 조건이 맞는지 확인하는 중입니다. 그렇지 않으면 런타임 중에 오류 메시지가 레이블에 표시됩니다.값이 변경되지 않음

내 문제는 조건이 실패하면 커서가 else 블록으로 이동하고 코드도 Excecuted가되지만 Label 텍스트가 변경되지 않는다는 것입니다. 문제가 될 수있는 것은 무엇입니까?

조건 부분은,

if (ds.Tables[0].Rows.Count > 0 
       && DateTime.Parse(frmtxtdt.Text).ToString("dd/MM/yyyy") == DateTime.Today.ToShortDateString() 
       && DateTime.Parse(totxtdt.Text).ToString("dd/MM/yyyy") == DateTime.Today.ToShortDateString()) 
      { 
       ds.Tables[0].TableName = "Passkeys"; 

       ds.WriteXml(Server.MapPath("~/XMLReports/_Passkeys.xml")); 
       string filename = Server.MapPath("~/Upload/Pkey_rpt.rpt"); 
       rpt.Load(filename); 
       rpt.SetDataSource(ds); 
       rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Passkeys"); 

      } 
      else if(frmtxtdt.Text.Trim() !=null && totxtdt.Text.Trim()!=null) 
      { 
       if (DateTime.Parse(frmtxtdt.Text).ToString("dd/MM/yyyy") == DateTime.Today.ToShortDateString() 
        && DateTime.Parse(totxtdt.Text).ToString("dd/MM/yyyy") == DateTime.Today.ToShortDateString() 
        && ds.Tables[0].Rows.Count == 0) 
       { 

        lblmsg.Text = "Pass Key Not Yet Delivered for the Selected Date..."; 
        //The value(lblmsg.Text) not Changing when comes here. 
       } 
       else 
       { 

        lblmsg.Text = "There is No Schedule for the Selected date...."; 
        //The value(lblmsg.Text) not Changing when comes here. 

       } 

      } 

     } 
     catch 
     { 
      throw; 
     } 

친구 나의 문제가없는 약 [날짜 시간] 또는 [날짜 시간 선택기]는 라벨의 텍스트가 런타임에 변경하지만 dispalying되지 않는 점이다.

또한 [rpt.ExportToHttpResponse (ExportFormatType.PortableDocFormat, Response, true, "Passkeys"); ] Report Report Generator가 PDF 파일 형식으로로드되어 있고 XML 파일에도 데이터가 있지만 다운로드 용 PDF 파일로 변환되지 않았습니다.

+2

외부 위치/위치인가? 입력 된 텍스트 데이터를 구문 분석 한 다음 'DateTime'값을 사용하여 다른 모든 작업을 수행하는 것이 좋습니다. –

+0

아마도 나중에 라벨을 덮어 쓰시겠습니까? –

+0

@ Jon Skeet 선택된 날짜가 텍스트 상자의 텍스트 형식으로되어 있기 때문에 문자열 비교를 사용하여 날짜를 비교하고 있습니다 – Rajesh

답변

1

웹이나 데스크톱의 오류 컨텍스트는 무엇입니까? 대안이 될 수있다 : 당신이 AJAX이 라벨이 내용을 서버로 전송되는 내에 있지 및이 업데이트되지 않습니다 호출 할 구성 요소를 사용하는 경우

  • . (웹 전용)
  • 이 레이블의 값을 지우는 이벤트 (포스트 백)가 발생할 수 있습니다 (웹 전용)
  • 레이블의 표시 속성을 확인하십시오. 코드의 일부에서 변경 될 수 있습니다
  • 라벨의 색상이 화면 배경과 동일하지 않은지 확인하십시오.
  • 는 모든 구성 요소는이 라벨을 중복 또는 그 라벨은 왜 문자열 비교를 사용하여 날짜를 비교하는 형태
+0

@ renefc3 광산은 우리가 사용했던 어플리케이션입니다 if if (! IsPostback) 조건을 하나 더 추가했는지 확인하고 색상과 Visible 속성이 모두 올바른지 확인하십시오 – Rajesh

+0

Rajesh , 혹시 같은 지점에있는 다른 컨트롤의 값을 변경하려고 시도한 적이 있습니까? (작동하는 경우 일부 옵션이 없어지므로)? 은 C# 페이지와 같이 문제를 시뮬레이트하려는 응용 프로그램의 광범위한 컨텍스트를 원합니다. 이렇게하면 쉽게 도움이됩니다 – renefc3

+0

@ renefc3 AJAX Control에서 문제가 해결되었습니다. 이제 해결되었습니다 ... – Rajesh

0

또한 매우 편리한 컨트롤이 있다는 것을 모르는 경우 날짜 선택을 위해 특별히 만들어진 "DateTimePicker"라고합니다. 그들에게 한 번 시험해보아야합니다.

변경 전 어딘가에서 예외가 발생하는지 궁금합니다.

+0

@ Andrey 나는 날짜 선택 도구가 아님을 확신합니다. 레이블 텍스트가 변경되지만 표시되지 않습니다. – Rajesh

0

UI 스레드가

텍스트

는 백그라운드 스레드에 대한 방법을 이동 작동하지 않을 경우를 설정 한 후 lblmsg.Refresh(); 추가 너무로드이기 때문에 발생; 크로스 스레딩을 조심하십시오. 간단한 interthread 작업의 경우 BackgroundWorker 클래스의 ReportProgress 메서드를 사용할 수 있습니다.

+0

@ Peuczyński 'lblmsg.Refresh();를 사용할 수 없습니다. 'System.Web .UI.Webcontrols.lblmsg.Refresh(); 존재하지 않습니다. R U 누락 된 어셈블리 또는 참조' – Rajesh

+0

당신은 이것이 WebUI라고 언급하지 않았습니다. Text 속성을 사용하여 레이블을 변경하므로 WPF (label.Content)를 배제하고 많은 경험이없는 ASP.NET이 아닌 Winforms이지만 실제로 백그라운드 스레드로 이동해야합니다. 또한 ASP에서 비동기 페이지라고 불리는 sth을 살펴보십시오 –

0

레이블의 텍스트 필드 값을 변경하는 것과 관련된 일부 감시자가 있다고 가정 할 수 있습니다. 따라서이 핸들러의 레이블 코드 블록을 변경하면 오류가 발생합니다 또는 잘 작동하지만 레이블 텍스트의 실제 값을 변경한다고 가정하지 않음), 텍스트 업데이트가 실패합니다.

관련 문제