문제

ASPX 페이지의 Databinder.eval 문에서 나오는 데이터를 어떻게 형식화하려면?

예를 들어, 뉴스 항목의 게시 날짜를 홈페이지의 특정 형식으로 표시하고 싶습니다. ASP.NET 2.0 리피터 컨트롤을 사용하여 뉴스 항목 목록을 표시합니다.

이에 대한 코드는 다음과 같습니다.

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1">
<HeaderTemplate><table cellpadding="0" cellspacing="0" width="255"></HeaderTemplate>
<ItemTemplate>
    <tr><td >
            <a href='/content/latestNews.aspx?id=<%#DataBinder.Eval(Container.DataItem, "id") %>'>
                <asp:Label ID="lblNewsTitle" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "title") %>'></asp:Label>
            </a>
    </td></tr>
    <tr><td>
           <asp:Label ID="lblNewsDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "publishedDate"))%>'></asp:Label>
    </td></tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate></asp:Repeater>

Databinder.eval 값을 따라 매개 변수 (아래와 같은)로 사용자 정의 메소드를 호출 할 수있는 방법이 있습니까?

<asp:Label ID="lblNewsDate" runat="server" Text='<%# GetDateInHomepageFormat(DataBinder.Eval(Container.DataItem, "publishedDate")) )%>'></asp:Label>

그렇다면 getDateInhomePageFormat 메소드는 어디에 쓰나요? 페이지 뒤의 코드에서 시도했지만 런타임 오류가 발생 했습니까? 이것이 불가능하다면 인라인 형식을 수행 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

Databinder.eval에 대한 옵션 오버로드가 있습니다.

<%# DataBinder.Eval(Container.DataItem, "expression"[, "format"]) %>

형식 매개 변수는 다음과 같이 값 자리 표시 자 교체 구문 (복합 형식이라고 함)을 사용하여 문자열 값입니다.

<asp:Label id="lblNewsDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "publishedDate", "{0:dddd d MMMM}") %>'</label>

다른 팁

인터넷을 검색 한 후 나는 그것을 발견했다 실제로는 매우 가능합니다 Databinder.eval 값을 전달하는 사용자 정의 메소드를 호출하려면

사용자 정의 메소드는 파일 뒤에 코드로 작성할 수 있지만 선언해야합니다. 공공의 또는 보호. 위의 내 질문에서, 나는 코드 뒤에 사용자 정의 메소드를 작성하려고했지만 실행 시간 오류를 받고 있다고 언급했습니다. 그 이유는 내가이 방법을 선언했기 때문입니다. 사적인.

따라서 요약하면 다음은 원하는 출력을 얻기 위해 Databinder.eval 값을 사용하는 좋은 방법입니다.

default.aspx

<asp:Label ID="lblNewsDate" runat="server" Text='<%# GetDateInHomepageFormat(DataBinder.Eval(Container.DataItem, "publishedDate")) )%>'></asp:Label>

default.aspx.cs 코드 :

public partial class _Default : System.Web.UI.Page
{

    protected string GetDateInHomepageFormat(DateTime d)
    {

        string retValue = "";

        // Do all processing required and return value

        return retValue;
    }
}

이것이 다른 사람들도 도움이되기를 바랍니다.

더 간단한 구문을 사용하지 않는 이유는 무엇입니까?

<asp:Label id="lblNewsDate" runat="server" Text='<%# Eval("publishedDate", "{0:dddd d MMMM}") %>'</label>

이것은 표현식과 문자열 형식을 취하는 템플릿 컨트롤 "Eval"입니다.

protected internal string Eval(
string expression,
string format

)

http://msdn.microsoft.com/en-us/library/3d2sz789.aspx

말한 것처럼 함수를 리피터에 사용할 수 있지만 데이터베인더가 객체를 반환하고 DateTime에 캐스트해야합니다.

또한 필드를 인라인으로 포맷 할 수도 있습니다.

<%# ((DateTime)DataBinder.Eval(Container.DataItem,"publishedDate")).ToString("yyyy-MMM-dd") %>

ASP.NET 2.0 또는 최신을 사용하는 경우 다음과 같이 쓸 수 있습니다.

<%# ((DateTime)Eval("publishedDate")).ToString("yyyy-MMM-dd") %>

또 다른 옵션은 OnitemDatabound 이벤트에서 값을 레이블에 바인딩하는 것입니다.

이 줄은 내 문제를 해결했습니다.

<%#DateTime.Parse(Eval("DDDate").ToString()).ToString("dd-MM-yyyy")%>

로컬 날짜 형식 사용을 사용하여 날짜를 포맷하려면 다음과 같습니다.

<%#((DateTime)Eval("ExpDate")).ToString("d")%>

날짜 로케일을 사용하여 날짜를 표시하려면 평가 명세서를 작성하는 방법

모두에게 감사합니다. 나는 얼마 동안 표준 형식 문자열에 갇혔습니다. 또한 VB에서 사용자 정의 기능을 사용했습니다.

마크 업 :-

<asp:Label ID="Label3" runat="server" text='<%# Formatlabel(DataBinder.Eval(Container.DataItem, "psWages1D")) %>'/>

뒤에 코드 :-

Public Function fLabel(ByVal tval) As String
   fLabel = tval.ToString("#,##0.00%;(#,##0.00%);Zero")
End Function

text = '< %# datetime.parse (Eval ( "lastlogindate"). tostring ()). tostring ( "mm/dd/yyyy hh : mm tt") %>'

이것은 원하는대로 형식에 대해 작동합니다

<asp:Label ID="ServiceBeginDate" runat="server" Text='<%# (DataBinder.Eval(Container.DataItem, "ServiceBeginDate", "{0:yyyy}") == "0001") ? "" : DataBinder.Eval(Container.DataItem, "ServiceBeginDate", "{0:MM/dd/yyyy}") %>'>
</asp:Label>

ASPX 페이지 에서이 방법을 사용할 수 있습니다

<%# DataBinder.Eval(Container.DataItem, "DateColoumnName", "{0:dd-MMM-yyyy}") %>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top