asp.net
  • gridview
  • 2011-04-27 189 views 11 likes 
    11

    En una página aspx estoy unión de los marcadores de esta manera:Cómo dar formato a un sello de tiempo para mostrar la fecha sólo en una vista de cuadrícula

    <asp:TemplateField HeaderText="Date of Joining"> 
          <ItemTemplate> 
           <asp:Label ID="Label6" runat="server" Text='<%# Eval("date_of_joining") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Paid Priviledge Date"> 
          <ItemTemplate> 
           <asp:Label ID="Label8" runat="server" 
            Text='<%# Eval("paid_priviledge_date") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
    

    Y en el código atrás Estoy vinculante la vista de cuadrícula de esta manera: (se da código mínimo)

    GridView1.DataSource = dt2; 
    GridView1.DataBind(); 
    

    Pero las columnas de GridView muestran la fecha de la siguiente manera:

    4/12/2011 12:00:00 AM  
    4/4/2011 12:00:00 AM 
    

    Para sugerir cómo t o eliminar la parte del sello de tiempo y mostrar solo la parte de la fecha.

    Sé cómo hacerlo formateando con ToString y SubString. Pero no puedo hacer esto en gridview.

    Respuesta

    8

    Cree un método FormatDate en su código subyacente y llámelo desde su vista de cuadrícula.
    http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
    http://www.csharp-examples.net/string-format-datetime/

    Esta parte irá en su código detrás

    private object FormatDate(DateTime input) 
    { 
        return String.Format("{0:MM/dd/yy}", input); 
    } 
    

    Y esto poco irá en su margen de beneficio

    <asp:TemplateField HeaderText="Date of Joining"> 
         <ItemTemplate> 
          <asp:Label ID="Label6" runat="server" Text='<%# FormatDate(Eval("date_of_joining")) %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Paid Priviledge Date"> 
         <ItemTemplate> 
          <asp:Label ID="Label8" runat="server" 
           Text='<%# FormatDate(Eval("paid_priviledge_date")) %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
    

    Esto es lo que yo llamaría un enfoque D.R.Y. a el problema. Si alguna vez necesita modificar el formato de alguna manera. Simplemente puede editar el código detrás del método y lloverá amor dulce a todas sus marcas.

    +1

    Lo siento, señor ... después de tantos días, cuando volví a mirar esta solución, encontré que había marcado la respuesta de ilivewithian como la más adecuada ... pero en realidad su respuesta es la más eficiente. Estoy marcando la suya como el correcto ahora. Perdón por el error. –

    +0

    Si lo hace en el marcado, puede hacer el cambio sin tener que volver a compilar. – Chad

    +1

    @Chad, un voto abajo porque no es su preferencia es un poco extraño para mí. Hay varias maneras de despellejar a un gato, el mío es una de esas formas. Prefiero NO hacerlo en el marcado porque me gusta mantenerlo limpio. Si no desea volver a compilar, configure su cadena de formato en App.config. –

    23

    Puede especificar las cadenas de formato para la sentencia eval:

    Eval("date_of_joining", "{0:dd/MM/yyyy}") 
    
    +0

    Genial, estaba buscando exactamente este tipo de respuesta súper útil. Muchas gracias señor –

    +0

    No quiero sonar como "Tengo razón y estás equivocado", ya que esta es absolutamente una respuesta correcta. Mi pregunta sin embargo es ...¿Qué sucede cuando necesitas cambiar el formato de la fecha? ¿Repasa todas sus marcas para encontrar todas las instancias? Al establecerlo como un código detrás de la función, puede cambiarlo en un punto y se propagará a todas las instancias. [DRY] (http://en.wikipedia.org/wiki/Don%27t_repeat_yourself) –

    +0

    De acuerdo, soy culpable de escribir lo primero que funciona en una respuesta de stackoverflow. – ilivewithian

    7

    Uso "{0:d}" para el formato de fecha corta. Trate

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

    y

    Text='<%# Eval("date_of_joining", "{0:d}") %>' 
    
    1

    Puede utilizar el DataFormatString en un campo enlazado el mismo se puede configurar de la siguiente manera:

    <asp:Label ID="Label8" runat="server" Text='<%# Eval("paid_priviledge_date","{0:d}") %>'/> 
    
    0
    Text='<%# (Convert.ToDateTime((Eval("date_of_joining")))).ToShortDateString() %>' 
    

    Ésta es la forma más sencilla que descubierto.

    Cuestiones relacionadas