2009-06-24 2 views
0

데이터 바인딩 된 DataGridView가 있습니다. 데이터 소스는 두 개의 DateTime 컬럼 (BeginTimeStampEndTimeStamp)을 포함하는 테이블이있는 유형이 지정된 데이터 세트입니다. 필자는 입력 된 데이터 집합의 Update 명령을 사용하여 SQL Server 2005 데이터베이스에 데이터를 읽고 씁니다.C# : 사용자가 DataGridView에 입력 한 값을 조정하는 방법?

사용자 나는 CellValidatingRowValidating 이벤트를 사용하여 시행 두 열, 각각에 날짜를 입력해야합니다. 0시 0분 0초

  • EndDate 컬럼에 대한 시간 값은 항상 23이어야합니다

    1. BeginDate 컬럼에 대한 시간 값은 항상해야한다 : 그러나 나는 또한 다음과 같은 두 가지 규칙이 적용 있는지 확인해야 : 59 : 59 (또는 원하는 경우 오후 11:59:59)

    사용자가 23:59:59를 항상 입력하는 것을 원하지 않으므로 어떻게 든 사용자의 이름을 변경하고 싶습니다. 1. 및 2.에 따라 입력하십시오.

    어디에서 어떻게 처리 할 수 ​​있습니까? 내가 불분명 경우

    편집

    죄송합니다. 사용자는 날짜 부분을 입력 할 수 있지만 BeginTimeStampEndTimeStamp의 경우 23:59:59는 자정에 고정됩니다.

    예 :

    사용자는 BeginTimeStamp 2009/01/01 오후 1시 0분 0초로 들어간다. 신청서를 2009/01/01 00:00:00으로 변경해야합니다.

    사용자는 2009/01/31 01:00:00을 입력합니다. EndTimeStamp. 신청서를 2009/01/31 23:59:59로 변경해야합니다.

  • 답변

    2

    난 그냥 날짜로 날짜 시간을 표시하고 내부적으로 시간을 추가 할 것입니다.

    사용자가 데이터를 입력하거나 데이터를 데이터베이스에 쓸 때와 같을 수 있습니다.

    전자를 선택한 경우 DataGridView.CellEndEdit 이벤트를 확인하십시오.

    시간을 적절히 설정하는 코드에 대한 노아의 답을 참조하십시오.

    0

    잘 모르겠습니다. 사용자는 두 날짜의 값을 입력해야하지만 항상 동일합니까? 만약 내가 제대로 이해하고 데이터베이스에 기본 값을 설정하지 왜 데이터 세트로 읽을 때, 그 값은 이미

    +0

    나는 영업 이익은 날짜 시간의 시간 부분이 동일해야 함을 의미합니다 생각하지만 날짜는 아무것도 할 수있다. – ChrisF

    +0

    혼란이 생겨서 죄송합니다 - 게시물을 편집하여 내용을 명확하게했습니다. –

    1

    당신은 다른 검증 한 후, 당신의 CellValidating 방법에 다음 줄을 추가 할 수있을 것

    DateTime newValue = oldValue.Date; 
    

    DateTime newValue = oldValue.Date.AddDays(1).AddSeconds(-1); 
    
    0

    당신은 또한 당신의 속성 setter 내부의 유효성 검사를 수행 할 수 있습니다

    public DateTime BeginTimeStamp 
    { 
        get { return _dateTime; } 
        set 
        { 
         // force the time to whatever you want 
         _dateTime = value.Date; 
        } 
    } 
    
    관련 문제