C#.NET Q&A

DateTime형의 default를 Null로 잡는 방법이 있는건가요? 굿모닝 평점: 없음 조회: 244
ㅠㅠ... 정말 하나부터 열까지 다 막히니까 취미로 공부하다가 속 뒤집어지네요...

제가 만드는 프로그램에서 DateTime형이 총 4개가 입력이 되어야 합니다.

Shipping.cs
    public class Shipping
    {
        public int Status { get; set; }
        public string Project { get; set; }
        public string Shipment { get; set; }
        public string Shipper { get; set; }
        public string Consignee { get; set; }
        public string POL { get; set; }
        public DateTime ETD { get; set; }
        public string POD { get; set; }
        public DateTime ETA { get; set; }
        public DateTime CC { get; set; }
        public DateTime DLV { get; set; }
    }

그래서 위처럼 만들었는데요.
문제가, DateTime의 항목들은 한번에 다 입력되는게 아니라, 진행 상황에 맞춰서 하나씩 업데이트 되거든요...
(ETD입력하고, 나중에 ETA가 입력되고, CC와 DLV가 한번에 되던가 나눠서 되던가 / 이런식입니다)

입력 폼을 만들어서 ETD에만 데이터를 담고 ListView에 보내는 것을 아래처럼 만들어봤는데,
에러가 뜨길래 알아보니 입력이 없는 DateTime은 Null이 아닌 공백이 들어가는거라서 에러가 발생한다고 하더군요.

MainWindow.xaml
        <StackPanel>
            <TextBox Name="PJT" />
            <TextBox Name="SHMT" />
            <TextBox Name="SHPR" />
            <TextBox Name="CNEE" />
            <TextBox Name="POL" />
            <DatePicker Name="ETD" />
            <TextBox Name="POD" />
            <DatePicker Name="ETA" />
            <DatePicker Name="CC" />
            <DatePicker Name="DLV" />
            <Button Name="Submit" Click="Submit_Click" Content="SUBMIT" Width="80" />
        </StackPanel>
 

MainWindow.xaml.cs
        private void Submit_Click(object sender, RoutedEventArgs e)
        {
            shipments.Add(new Shipping()
            {
                Project = PJT.Text,
                Shipment = SHMT.Text,
                Shipper = SHPR.Text,
                Consignee = CNEE.Text,
                POL = POL.Text,
                ETD = ETD.SelectedDate.Value,
                POD = POD.Text,
                ETA = ETA.SelectedDate.Value,
                CC = CC.SelectedDate.Value,
                DLV = DLV.SelectedDate.Value
            });
 
            ShippingList.DataContext = this.shipments;
        }
    }
 
xaml에서 DatePicker를 사용해서 날짜를 입력할 때,
날짜를 선택하지 않는 게 Null도 아닌 공백이라 문제가 되는걸로 생각되는데요.
이 부분은 아무리해도 해결이 안되네요...

default를 Null로 잡으면 그나마 해결이 될 것 같은데, 구글링으로는 도저히 답이 안나와서 질문 드립니다.
어떻게 해야하는지 조언 주시면 정말 감사 하겠습니다.

+ 계속 찾다보니 예외처리를 해야하는 것 같습니다... 혹시 이런 경우는 어떻게 하는건지 조언 부탁 드립니다.

이런 말 하긴 뭐 하지만...제가 워낙 초보고 물어볼데도 없는지라...
간단한 예시로 부탁 드립니다...ㅠㅠ...
태그 : datetime, null
작성자 정보
굿모닝
Level 10
 [EXP.5/14]

메일:  비공개
글등록 +12 72 덧글등록 +3 21
자기소개
독학으로 C# 윈폼 개발 도전 중입니다.
글 공유하기 |
  tweet facebook
2018-03-10 오전 12:51:49
나도한마디
사용자
구니구니            [2018-03-12]
Level 22
 [EXP.30/50]
DateTime 형식이 아닌
null을 허용하는 DateTime? 으로 바꿔보시면 좋을거같아요.
처음에 바로 값이 들어가는 속성의 타입은 DateTime으로 하시면 될거같아요.
사용자
굿모닝            [2018-03-12]
Level 10
 [EXP.5/14]
답변 감사 드립니다. Nullable관련된 방법은 사용 해 봤는데 안먹히네요...

처음에 바로 값이 들어가는... 이 말씀이 잘 이해가 안되는데 혹시 조금 덧붙여주실 수 있으실까요 ㅠㅠ?

System.InvalidOperationException: 'Null 허용 개체에는 값이 있어야 합니다.'
이런 에러가 뜹니다.
사용자
thecco            [2018-03-21]
Level 10
 [EXP.10/14]
DateTime뒤에 물음표를 붙이세요
태그로 엮인글
글리스트
C# Null Reference log 관련 질문입니다.[1]  초보개뱔~
C# 데이터그리드뷰 관련 질문있습니다.[1]  민이2
어느게 더 효율적인 코딩인가요??[2]+1  빠라밤바
c# 윈폼 object배열[1]+2  이성민
메인폼안의 다른 컨트롤 중앙에 띄우기 질문드립니당..[1]+1  짱재
C# 깜박깜박 거리는 그래픽 문제에 대해 질문합니다.[2]+4  hhgya
C# 파일 여러개 업로드[1]+10  타타
웹서비스로 AccDB조회 하는 프로그램(윈도우7, 윈도우 10)  오하우하
ArrayList에 Add와 AddRange로 추가시 형변환 예외[1]+2  devker
문자셋( charset ) 설정하는방법좀 가르쳐주세요[1]+2  엿장수
 ★현재글->   DateTime형의 default를 Null로 잡는 방법이 있는건가요?[1]+2  굿모닝
c# User Control 을 사용하여 double click 이벤트를 만드는 방법이요[2]  Tube
안녕하세요 C# 어르신분들 listview 질문이 있어서 올립니다.[2]  C#꿈나무
[RE] 안녕하세요 C# 어르신분들 listview 질문이 있어서 올립니다. 파일첨부 훈스남훈남조으다
메인 폼에서 새로운 폼 열릴때. 질문드립니다.[3]+5  짱재
Ushort 음수값 저장[2]  훈스훈스훈스
MySqlConnection 트랜잭션 변수 왜 있나요?  부탁해스마일
[C#] A.EXE 와 B.EXE 간의 Interface ?, Event ? DLL 을 만들어서 메세지 전달이 가...[4]+4  inhi5869
[질문]C# 에서 경로설정 방법 문의  파일첨부 CS시작
SPA ++ 을이용한 combobox 선택된 텍스트값을이용하여 핸들을 가져오고 싶은데 안되네요...  독고다이
현업 개발시 이런 상황은 어떻게 처리하는게 좋은건가요?? [2]+1  빠라밤바