none
Transformar milissegundo (183721) no formato mm:ss dentro do GridView RRS feed

  • Pergunta

  • Eu tentei fazer da seguinte forma, mas não adiantou.

     

    Model:

    public TimeSpan trackTimeMillis { get; set; }

    View (aspx)

    <asp:BoundField DataField="trackTimeMillis" HeaderText="Duração" ApplyFormatInEditMode="True" DataFormatString="{0:mm:ss}" />

    Gostaria de saber se o tipo que eu coloquei na Model está realmente certo (TimeSpan) e como eu faço para transformar esse número inteiro em minuto:segundo?


    segunda-feira, 7 de setembro de 2015 14:08

Respostas

  • Samuel, obrigado pelo retorno.

    Eu dei uma olhada no teu link, porém eu achei a solução marcada muito complicado.

    De qualquer forma eu já consegui resolver de outra forma.

    Eu vou deixar a solução que eu consegui aqui, para que outros possam ver caso também precisem.

    <asp:GridView runat="server" ID="gridView1">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <%#TimeSpan.FromMilliseconds(Convert.ToInt32(Eval("TrackTimeMillis"))).ToString(@"mm\:ss")%>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>


    terça-feira, 8 de setembro de 2015 23:30

Todas as Respostas

  • Opa, tudo bom danilo.meneghel?

    Tenta fazer como neste link

    Boa sorte!

    • Marcado como Resposta Marcos SJ segunda-feira, 7 de setembro de 2015 14:46
    • Não Marcado como Resposta danilo.meneghel terça-feira, 8 de setembro de 2015 23:31
    segunda-feira, 7 de setembro de 2015 14:36
  • Oi Samuel, obrigado pela resposta.

    Tentei aqui, mas não consegui.

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            Int32 sss = (Int32)value;
            Int32 ss = sss / 1000;
            Int32 mm = ss / 60;
            ss = ss % 60;
            return string.Format(@"{0:D2}:{1:D2}", mm, ss);
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return Binding.DoNothing; // Thanks to Danny Varod for the suggestion!
        }

    Deu erro no retorno do ConvertBack, em "DoNothing"

    Também não entendi onde coloca a variavel que receberá o timspan?

    Mais abaixo achei esse outro:

    <TextBox Height="23" Text="{Binding Time, StringFormat={}{0:mm:ss}}" />

    Só que deu erro na saída:

    A cadeia de caracteres de entrada não estava em um formato incorreto.

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.FormatException: A cadeia de caracteres de entrada não estava em um formato incorreto.

    Lembrando que eu quero mudar o formato do tempo (mm:ss) dentro de um GridView.

    Se puder me explicar melhor como isso funciona, ou tiver outra solução, eu agradeço!


    terça-feira, 8 de setembro de 2015 02:18
  • Tentei agora dessa outra forma, mas também não deu certo:

    protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                Int32 sss = (Int32)sender;
                Int32 ss = sss / 1000;
                Int32 mm = ss / 60;
                ss = ss % 60;
    
                if (e.Row.RowType == DataControlRowType.DataRow)
                    e.Row.Cells[3].Text = string.Format(@"{0:D2}:{1:D2}", mm, ss, Convert.ToInt32((e.Row.DataItem as DataRowView).Row["trackTimeMillis"]));
            }

    Mais alguma sugestão?


    • Editado danilo.meneghel terça-feira, 8 de setembro de 2015 03:50
    • Sugerido como Resposta Samuel Pelaquim quarta-feira, 9 de setembro de 2015 11:35
    • Não Sugerido como Resposta Samuel Pelaquim quarta-feira, 9 de setembro de 2015 11:36
    terça-feira, 8 de setembro de 2015 03:49
  • danilo.meneghel,

    Dá uma olhada nessa solução aqui. Vê se se aplica ao seu caso.

    Espero que possa ajudar.

    terça-feira, 8 de setembro de 2015 12:05
  • Samuel, obrigado pelo retorno.

    Eu dei uma olhada no teu link, porém eu achei a solução marcada muito complicado.

    De qualquer forma eu já consegui resolver de outra forma.

    Eu vou deixar a solução que eu consegui aqui, para que outros possam ver caso também precisem.

    <asp:GridView runat="server" ID="gridView1">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <%#TimeSpan.FromMilliseconds(Convert.ToInt32(Eval("TrackTimeMillis"))).ToString(@"mm\:ss")%>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>


    terça-feira, 8 de setembro de 2015 23:30