Utilizando el formato de cadenas .NET, ¿cómo puedo dar formato a una cadena que se mostrará en blanco (cadena vacía) para el cero (0)?

StackOverflow https://stackoverflow.com/questions/2282573

Pregunta

Estoy utilizando una expresión DataBinder.Eval en un DataGrid de ASP.NET, pero creo que esta pregunta se aplica a formato de cadenas en .NET en general. El cliente ha solicitado que si el valor de una cadena es 0, no debe ser representada. Tengo el siguiente truco para lograr esto:

<%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "", 
    DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}"))  %>

Me gustaría cambiar el formato a {0:N0} expresión para que pueda eliminar la instrucción IIF, pero no puedo encontrar nada que funcione.

¿Fue útil?

Solución

Es necesario utilizar el sección de separador , como este :

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>

Tenga en cuenta que sólo la parte negativa puede estar vacía, así que tengo que poner un espacio en la sección 0. (Lea la documentación del )

Otros consejos

Teniendo en cuenta la respuesta aceptada:

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>

La un espacio se coloca en el la tercera posición, sin embargo la colocación de un # en la tercera posición eliminará la necesidad de llamar Trim().

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>

Utilice un método personalizado.

public static string MyFormat(double value) {       
    return value == 0 ? "" : value.ToString("0");
}

<%# MyFormat(Convert.ToDouble(Eval("MSDWhole"))) %>

Trate de llamar a una función mientras que la unión como esto

<%# MyFunction( DataBinder.Eval(Container.DataItem, "MSDWhole") ) %>

y dentro de la función hace el formato que desee

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top