2012-09-27 4 views
0

작업 완료 날짜 & 작업 데드 라인의 DATEDIFF을 표시 할 쿼리가 있습니다. 작업이 시간 내에 완료되었는지 여부를 표시하고 날짜 차이 값에 따라 결과를 "완료 시간"및 "완료 시간 없음"으로 표시하려고합니다. 시간에 완료 경우 < 0 것은 시간 내에 완료되지 않을 경우asp.net Gridview에서 DateDiff 값에 따라 String을 표시하는 방법은 무엇입니까?

select memname, 
     CONVERT(nvarchar, DATEDIFF(d,CompleteDate,FreeTrialTaskMst.Enddate)) AS Difference 
    from member 

여기에 내가 value >= 0를 얻을.

이제이 값을 얻으면 텍스트를 "완료 시간"또는 "완료되지 않음"으로 그리드에 바인딩하려고합니다. 그리드보기에서

:

<asp:TemplateField HeaderText=" DeadLine"> 
    <ItemTemplate> 
    <asp:Label ID="lblDeadLine" runat="server" Text='<%# (Eval("DeadLine")) %>' ReadOnly="true"></asp:Label> 
    </ItemTemplate> 
    </asp:TemplateField> 

그것을 어떻게?

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRow row = ((DataRowView)e.Row.DataItem).Row; 
     Label lblDeadLine = (Label)e.Row.FindControl("lblDeadLine"); 
     int deadLine = int.Parse(row.Field<String>("DeadLine")); 
     if(deadLine < 0) 
      lblDeadLine.Text = "Not Completed in Time"; 
     else 
      lblDeadLine.Text = "Completed in Time"; 
    } 
} 

하지만 난 처음부터 (SELECT CASE WHEN ...)에서 SQL 당 또한 그것을 할 제안 :

답변

0
select memname, 
    (case when DATEDIFF(d,CompleteDate,FreeTrialTaskMst.Enddate) >0 then 'completed' 
else 'Not Complete' end) as DeadLine 
    from member 
+0

@vikram을 이용해 주셔서 감사합니다. 매우 도움이됩니다. –

0

아마 가장 쉽고 읽을 수는 RowDataBound를 사용하는 것입니다.

그런데 int 값을 DATEDIFF에서 nvarchar으로 변경하는 이유는 무엇입니까?

+0

답장을 보내 주셔서 감사합니다. 너무 대답 해주세요. –