2011-10-01 25 views
31

Estoy tratando de averiguar cómo cambiar el formato de fecha y hora para que solo aparezca la fecha.¿Cómo cambio el formato de fecha de un DataBinder.Eval en 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> 

supongo que es algo entre el <%%>, pero no estoy seguro.

Mi código subyacente es:

<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> 

Actualmente, se trata al otro lado de este aspecto:

HTML View

Y lo que estoy buscando es para la marca de tiempo que se ha ido allí .

Cualquier ayuda es apreciada.

EDIT:

Esto es lo que estaba buscando:

  <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> 

Respuesta

44

dar el formato por ejemplo:

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

No se puede probar este código en este momento, pero algo en la línea de?

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

Esto no funciona, ya que .ToString() no puede tomar ningún parámetro allí. – banging

23

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

0

también puede cambiar su tsql a la siguiente o simplemente quitar el 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

También debe verificar la Solicitud ["id"] para cualquier inyección sql ... – Christian

1

pongo esto en el código detrás:

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

y utilizar esto en el XHTML: texto = '<% # makeShortDate (DataBinder.Eval (Container.DataItem, "MiFecha"))%>' Usted puede modificar esto para cualquier tipo.

Cuestiones relacionadas