Utilizzando formattazione di stringhe .NET, come faccio a formattare una stringa da visualizzare vuota (stringa vuota) per lo zero (0)?

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

Domanda

Sto usando un'espressione DataBinder.Eval in ASP.NET DataGrid, ma penso che questa domanda vale per formattazione delle stringhe in .NET in generale. Il cliente ha richiesto che, se il valore di una stringa è 0, non dovrebbe essere visualizzato. Ho il seguente trucco per ottenere questo risultato:

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

Vorrei cambiare la formattazione {0:N0} espressione in modo che possa eliminare l'IIF, ma non riesco a trovare tutto ciò che funziona.

È stato utile?

Soluzione

È necessario utilizzare il sezione di separazione , come questo :

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

Si noti che solo la sezione negativa può essere vuoto, quindi ho bisogno di inserire uno spazio nella sezione 0. (Leggi la documentazione )

Altri suggerimenti

Data la risposta accettata:

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

Lo spazio viene inserito nella posizione 3, tuttavia ponendo un # nella terza posizione eliminerà la necessità di chiamare Trim().

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

Usa un metodo personalizzato.

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

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

Prova a chiamare una funzione pur essendo vincolanti come questo

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

e all'interno della funzione effettua la formattazione che si desidera

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top