2011-10-01 9 views
31

Sto cercando di capire come modificare il formato datetime in modo che venga visualizzata solo la data.Come cambio il formato della data di un oggetto DataBinder.Eval in asp.net?

  <asp:Repeater ID="RepeaterActions" runat="server"> 
      <ItemTemplate> 
       <li> 
        <span class="historyDate"><%#DataBinder.Eval(Container.DataItem, "ActionListDate")%></span> 
        <span class="historyName"><%#DataBinder.Eval(Container.DataItem, "LeadActionName")%></span><br /> 
        <span class="historyNotes"><%#DataBinder.Eval(Container.DataItem, "ActionListNote")%></span> 
       </li> 
      </ItemTemplate> 
     </asp:Repeater> 

Sto indovinando è qualcosa tra il <%%>, ma non sono sicuro.

Il mio codice dietro è:

<pre> 
     protected void RepeaterActionsFill() 
    { 

     string sql = @" select a.ActionListDate, a.LeadListID, 
a.ActionListNote, 
l.LeadActionName 
from ActionLists as a 
INNER JOIN LeadActions as l 
ON a.LeadActionID = l.LeadActionID 
where a.LeadListID = " + Convert.ToInt32(Request["id"].ToString()); 

     RepeaterActions.DataSource = DBUtil.FillDataReader(sql); 
     RepeaterActions.DataBind(); 
    } 
</pre> 

Attualmente, si tratta dall'altra parte simile a questo:

HTML View

E quello che sto cercando è per il timbro di tempo per essere andato lì .

Qualsiasi aiuto è apprezzato.

EDIT:

Ecco quello che cercavo:

  <asp:Repeater ID="RepeaterActions" runat="server"> 
      <ItemTemplate> 
       <li> 
        <span class="historyDate"><%#DataBinder.Eval(Container.DataItem, "ActionListDate", "{0:M/d/yy}")%></span> 
        <span class="historyName"><%#DataBinder.Eval(Container.DataItem, "LeadActionName")%></span><br /> 
        <span class="historyNotes"><%#DataBinder.Eval(Container.DataItem, "ActionListNote")%></span> 
       </li> 
      </ItemTemplate> 
     </asp:Repeater> 

risposta

44

dare l'esempio formato:

<%# DataBinder.Eval(Container.DataItem, "ActionListDate", "{0:d/M/yyyy hh:mm:ss tt}") %> 
-3

Non può verificare questo codice in questo momento, ma qualcosa lungo le linee di?

<%#DataBinder.Eval(Container.DataItem, "ActionListDate").ToString("dd/MM/yyyy") %> 
+0

Questo non funziona poiché .ToString() non può prendere alcun parametro lì .. – banging

23

<%# string.Format("{0:ddd MMM yyyy}", Eval("ActionListDate"))%>

0

inoltre è possibile modificare il TSQL al seguente o semplicemente rimuovere il Convert.ToInt32()

string sql = string.Format(@"select a.ActionListDate, a.LeadListID, 
          a.ActionListNote, 
          l.LeadActionName 
          from ActionLists as a 
          INNER JOIN LeadActions as l 
          ON a.LeadActionID = l.LeadActionID 
          where a.LeadListID = {0};", Request["id"]); 
+0

Si dovrebbe anche controllare la richiesta ["id"] per qualsiasi SQL injection ... – Christian

1

Ho messo questo in codice sottostante:

public string makeShortDate(object oDate) 
{ 
    if (oDate is DBNull) { 
     return ""; 
    } else { 
     DateTime dDate = Convert.ToDateTime(oDate); 
     string sDate = dDate.ToShortDateString(); 
     return sDate; 
    }   
} 

e utilizzare questo in XHTML: Text = '<% # makeShortDate (DataBinder.Eval (Container.DataItem, "MyDate"))%>' È possibile modificare questo per qualsiasi tipo.

Problemi correlati