2014-01-11 2 views
0

신입 사원 C# 신시대로 날짜를 추가하려면 값을 캐스팅해야하지만 null 일 수 있습니다. 여기에 내가 할 방법은 다음과 같습니다평가가 Eval ("VALUE")이 Null입니다.

여기
if(Eval("DUREE") != DBNull.Value) 
{ 
    DataBinder.Eval(Container.DataItem, 
      Convert.ToString(Convert.ToDateTime(Eval("DATE")). 
        AddMinutes(Convert.ToInt32(Eval("DUREE")))), "{0:HH:mm}") 
} 
else 
{ 
    " - " 
} 

오류 내가 얻을 :

데이터 바인딩 : 속성이라는 처신하지 않습니다 'System.Data.DataRowView': '17를/04/2014 13시 반 : 00 '.

그래서 검사가 거짓입니까? 아니면 다른 곳에 오류가 있습니까?

ps : 잘못된 코드 형식 작성으로 죄송합니다. 더 나은 방법을 모르겠습니다.

+4

Goooood lord ... 식을 여러 개의 문으로 나눠서 디버깅을 시작하십시오. 당신이 문제를 더 쉽게 찾을 수 있도록 도울 것입니다.) – walther

답변

3

에 한번 사용 코드 값을 반환하는 동안 "날짜와 문자열을 필요로하는 곳에 당신은 분의 추가 작업을 수행 할 수 있습니다 - DataBinder.Eval에서 당신이 아닌 날짜 속성 이름과 두 번째 매개 변수의 문자열을 전달 코드에서 "

<%# Eval("DUREE") == DBNull.Value || Eval("DATE") == DBNull.Value 
    ? " - " 
    : Convert.ToString(Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToInt32(Eval("DUREE")))), "{0:HH:mm}") %> 

문제.

+0

당신은 하루를 보내고 저를 구했습니다. –

+0

.. 아무 문제 없어 :) –

+0

2 1/2 년 후, 이것은 나를 위해 그것을 못 박았. – nycdan

1

'Eval'메서드가 문자열 형식의 날짜 값을 반환한다고 가정하면이 작업을 수행하려고합니까? : Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToDateTime(Eval("DUREE")).Minute) 분 추가에 대한 답변 일 수도 있습니다.

그러나 오류는 다른 문제를 나타내는 것으로 보입니다. 게시 한 코드는 코드 뒤에있는 것 같습니다 (?). DataBinder.Eval 메서드는 일반적으로 Repeater 컨트롤과 같은 웹 컨트롤을 위해 aspx에서 사용됩니다. 이 경우 public 속성의 이름으로 두 번째 매개 변수를 DataBinder.Eval에 전달해야합니다.

당신은 명확하게 클릭이를 확인하실 수 있습니다 here

장소에 영문으로 재산을

+0

문제는'Eval ("DUREE")'가 DBNull을 반환하고 캐스팅에서 충돌 할 수 있다는 것입니다 ... –

+0

if (Eval (" "DUREE")! = DBNull.Value && Eval ("DATE")! = DBNull.Value). 그러나 나는 던지기에있는 충돌에 그 문제가 확실하지 않다. –

관련 문제