2017-03-17 3 views
0

Ich habe ein asp: Gridview, in einer Spalte Ich habeASP.NET verwenden Proxy-Wert in asp: Gridview

<asp:TemplateField AccessibleHeaderText="Created" ItemStyle-Wrap="false"> 
    <ItemTemplate> 
     <asp:LinkButton ID="lnkTimeline" runat="server" CausesValidation="False" CommandName="Continue" CommandArgument='<%# Container.DataItemIndex %>' Text='<%# CreatedAt_Proxy %>'></asp:LinkButton> 
    </ItemTemplate> 

und der Proxy:

public string CreatedAt_Proxy 
{ 
    get 
    { 
     string rv = ""; 
     int secondsPast = (int)DateTime.UtcNow.Subtract(CreatedAt).TotalSeconds; 
     int threshold = 5 * 24 * 60 * 60; 
     if (secondsPast >= threshold) rv = "<span style='color: red'>"; 
     rv += E.HourFormat(secondsPast, false) + " ago"; 
     rv += "<br />" + CreatedAt.ToString("dd.MM.yyyy HH:mm"); 
     if (secondsPast >= threshold) rv += "</span>"; 
     return rv; 
    } 
} 

ich diesen Proxy verwenden möchten, in may gridview (Text='<%# CreatedAt_Proxy %>'), damit ich Links mit dem Text mit unterschiedlichen Zeiten generieren kann.

Antwort

0

Sie hängen in das RowDataBound-Ereignis ein, um die Daten nach Ihren Wünschen zu rendern.

if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     LinkButton lnkTimelineButton = e.Row.FindControl("lnkTimeline") as LinkButton ; 
     lnkTimelineButton.Text= GetProxyTime(); 
    } 

// Erstellen Sie die folgende Funktion und erhalten Sie die Werte für proxytime.

private string GetProxyTime() 
    { 
    string rv = ""; 
        int secondsPast = (int)DateTime.UtcNow.Subtract(CreatedAt).TotalSeconds; 
        int threshold = 5 * 24 * 60 * 60; 
        if (secondsPast >= threshold) rv = "<span style='color: red'>"; 
        rv += E.HourFormat(secondsPast, false) + " ago"; 
        rv += "<br />" + CreatedAt.ToString("dd.MM.yyyy HH:mm"); 
        if (secondsPast >= threshold) rv += "</span>"; 
        return rv; 
    }