2009-05-07 1 views
10

Je lie dynamiquement un gridview à partir d'une table dans ma base de données que j'ai appelé "Sessions". Je reçois l'information à partir d'une méthode à l'aide d'une requête LINQ qui est quelque chose comme ceci:asp.net formatage dateTime dans gridview

var s = from sessions in datacontext.Sessions 
        where sessions.test == id 
        orderby sessions.ID ascending 
        select sessions; 
gridView.DataSource = qsessions; 
gridView.DataBind(); 

Sessions contient un champ dateTime que je veux minimiser pour afficher uniquement la date (mois/jour/année). D'après ce que j'ai lu des recherches sur Google, la solution est de spécifier la mise en forme dans le balisage ASPX du gridview en utilisant quelque chose comme:

<asp:TextBox ID="txtDate" runat="server" Text='<%# Eval("dateTime", "{0:MM/dd/yyyy}") %>'></asp:TextBox> 

Il ne semble pas fonctionner et montre encore le temps après la date . Y a-t-il quelque chose qui me manque? Aide beaucoup apprécié!

Répondre

19

Essayez:

<asp:TextBox ID="txtDate" runat="server" Text='<%# Convert.ToDateTime(Eval("dateTime")).ToString("d") %>'></asp:TextBox> 

Voir ce site utile pour plus d'options de formatage:

http://www.mikesdotnetting.com/Article.aspx?ArticleID=23

+0

Merci à tous . Celui-ci a travaillé au premier essai. N'a pas essayé les autres alors ils travaillent probablement aussi. Je vous en suis reconnaissant! –

+0

Text = '<% # Eval ("dateTime", "{0: d}")%>' – fubo

0

Je pense que vous datetime la variable est évaluée en tant que chaîne. Essayez de le convertir en DateTime.

3

Implémentez l'événement OnDataBinding pour le TextBox dans la grille.

<asp:TextBox ID="txtDate" runat="server" OnDataBinding="txtDate_DataBinding"> 
</TextBox> 

Puis dans votre code derrière implémentez l'événement OnDataBinding:

protected void txtDate_OnDataBinding(object sender, System.EventArgs e) 
{ 
    TextBox txt = (TextBox)(sender); 
    txt.Text = (DateTime)(Eval("YourDateField")).ToString("MM/dd/yyyy"); 
} 

Je préfère avoir tout le code dans le code-behind et rien dans la page ASPX mais vous pouvez aussi incruster là aussi. Voici un lien vers un fil où je décris pourquoi je préfère le faire en codebehind:

OnDataBinding vs Inline: pros, cons and overhead

1
<asp:Label ID="lblDateBudget" runat="server" Text='<%# Eval("DateBudget", "{0:MM/d/yyyy}")%>'></asp:Label> 

Bonjour les amis, Voici un autre type de solution du problème que vous avez défini ci-dessus. Vous venez de définir la date de votre type de données et non datetime et essayez d'accéder de cette manière. J'espère que ce serait utile pour vous.

2

ASP gridview lui-même prend en charge le format de date, essayez d'ajouter

DataFormatString="{0:dd-MM-yyyy}" 
2

Date de support Gridview mise en forme par DataFormatString. Pour exemple-

<asp:BoundField DataField="Date" HeaderText="Visit date" DataFormatString="{0:dd-MMM-yyyy}" >        
          </asp:BoundField> 

et son look comme this-

Date visite
15-Oct-2013
12-Oct-2013
11-Oct-2013