Domanda

Ho un campo intero nel mio database che contiene un valore della data nel modulo yyyyMMdd. È possibile analizzarlo come una data nel modulo dd/MM/yyyy come associato a un datagrid?

Attualmente il campo è vincolato in questo modo:

<asp:boundcolumn datafield="access_date" headertext="Last logged on"></asp:boundcolumn>
È stato utile?

Soluzione

Perché non usi Data per le date nel database? È possibile convertire INT in DateTime usando il seguente codice di esempio:

var sdate = intdate.ToString();
var date = DateTime.ParseExact(sdate, "yyy/MM/dd", CultureInfo.InvariantCulture);

Altri suggerimenti

Grazie a Gor per avermi guidato attraverso questo. La sua risposta in sé non era l'intera soluzione, ma dopo alcuni commenti avanti e indietro, ho finito con una buona soluzione.

Invece di usare un asp:boundcolumn Nella griglia, dovevo usare asp:templatecolumn e mostralo attraverso un'espressione di legame (come Gor spiegato nel suo commento, anche se penso che abbia basato la sua risposta sull'uso del asp:listview controllo, mentre uso il vecchio asp:datagrid controllo).

Nel <columns> Collezione del asp:datagrid controllo:

<asp:TemplateColumn headertext="Last logged on" >
<ItemTemplate><%#DateStringFromInt(Eval("access_date"))%></ItemTemplate>
</asp:TemplateColumn>

Nel codice di codice:

protected string DateStringFromInt(object value)
{
    DateTime date;
    if (DateTime.TryParseExact(value.ToString(), "yyyyMMdd", 
        CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, 
        out date))
    {
        return date.ToString("dd/MM/yyyy");
    }
    return value.ToString(); //Return original if not expected format
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top