2013-03-04 3 views
0

페이지에 gridview가있는 ASP.NET 3.5 응용 프로그램이 있습니다.DataFormatString이 gridview 열에서 작동하지 않습니다.

하나의 열을 datetime으로 포맷하려고합니다. 나는 시도했다 :

<asp:BoundField DataField="StatusDate" HeaderText="as of" SortExpression="StatusDate" DataFormatString="{0:d}" /> 

문제점은 내가하는 일과 상관없이, 나의 포맷팅은 결코 바뀌지 않는다. 다른 날짜 형식 문자열 (일반, 정렬 가능, 긴 날짜, 목록 계속됨)을 시도했지만이 열의 형식은 변경되지 않습니다.

나는 아무것도 잘못하고 있다고 생각하지 않지만,이 칼럼을 기반으로 정렬하려고 할 때 이것은 열심히 노력하고 있습니다. 기본값은 열을 문자열로 지정하기 때문에 열 헤더별로 정렬 할 때 올바르게 정렬되지 않습니다.

누구나 쉽게 볼 수있는 해결책이 있습니까? 필자는 사용자 정의 정렬 방법을 추가하는 방법을 언급 한 기사를 보았지만 가능한 경우 즉시 사용할 수있는 기능을 고수하려고합니다.

+0

만약 당신이 {0 : dd MM yyyy} –

+0

만약에 그 플래그가 설정되지 않은 상태에서 3.5+가 잘 동작해야한다고 말하긴하지만'.HtmlEncode = false'를 설정해보십시오. – Marc

+0

@Marc - 이미 시도해 보았습니다. 주사위가 없다. – Tim

답변

0

문자열에서 datetime 형식으로 포맷 할 수 없습니다.

그러나 다음 방법을 사용할 수 있습니다. 출력은 기본적으로 BoundField를 사용하는 것과 같습니다.

<asp:TemplateField HeaderText="as of" SortExpression="StatusDate"> 
    <ItemTemplate> 
     <asp:Literal ID="Literal1" runat="server" 
     Text='<%# string.Format("{0:d}", Convert.ToDateTime(Eval("StatusDate"))) %>'>   
     </asp:Literal> 
    </ItemTemplate> 
</asp:TemplateField> 
0

사실은이 문제를 몇 번 했어 다음과 같은 솔루션과 함께 올라와있다. 우선 모든 데이터를 저장 용 DataTable에 저장합니다.

두 번째로, 특별히 서식을 지정해야하는 열도 데이터 형식을 암시 적으로 정의합니다.

DataTable table = new DataTable(); 
    table.Columns.Add("decimalNumber").DataType = System.Type.GetType("System.Decimal"); 
    table.Columns.Add("date").DataType = System.Type.GetType("System.DateTime"); 

그럼 난의 GridView

<asp:BoundField DataField="decimalNumber" DataFormatString="{0:C}" /> 
    <asp:BoundField DataField="date" DataFormatString="{0:dd/MM/yyyy}" /> 

에 전화를하고 그 결과이 $ 0.00 & 19/11/2014처럼 보일 때. 이게 도움이 되길 바란다.

0

해당 열의 원본 데이터 형식이 datetime이 아니기 때문에!

관련 문제