2010-02-17 10 views
6

मैं एक एएसपी.नेट डाटाग्रिड में डेटाबिंडर। औसत अभिव्यक्ति का उपयोग कर रहा हूं, लेकिन मुझे लगता है कि यह प्रश्न सामान्य रूप से .NET में स्ट्रिंग स्वरूपण पर लागू होता है। ग्राहक ने अनुरोध किया है कि यदि स्ट्रिंग का मान 0 है, तो इसे प्रदर्शित नहीं किया जाना चाहिए। मैं निम्नलिखित हैक यह पूरा करने के लिए है:.NET स्ट्रिंग स्वरूपण का उपयोग करके, मैं शून्य (0) के लिए रिक्त (खाली स्ट्रिंग) प्रदर्शित करने के लिए स्ट्रिंग को कैसे प्रारूपित करूं?

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

मैं {0:N0} स्वरूपण अभिव्यक्ति को बदलने के लिए इतना है कि मैं IIf बयान समाप्त कर सकते हैं चाहते हैं, लेकिन कुछ भी है कि काम करता है नहीं मिल रहा।

+0

फ़ॉर्मेटिंग फिक्स, निक के लिए धन्यवाद। अब मैं देखता हूं कि यह कैसे करें। –

उत्तर

10

आप इस तरह section separator उपयोग करने के लिए, की जरूरत है:

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

ध्यान दें कि केवल नकारात्मक अनुभाग खाली हो सकता है, तो मैं 0 अनुभाग में एक अंतरिक्ष डाल करने के लिए की जरूरत है। (documentation पढ़ें)

+2

यह एक अच्छा दिन है। मैंने कुछ सीखा और यह अभी भी 10 एएम नहीं है! काश मैं दो बार ऊपर उठ सकता है। –

+0

लगभग सही, लेकिन एन 0 एक मानक प्रारूप है और आपको कस्टम प्रारूप की आवश्यकता है, उदा। "{0: #, ## 0 ;;}"। आपको तीसरे खंड में जगह लगाने की जरूरत नहीं है। – Joe

+1

सावधानी, यह काम नहीं करेगा जैसा कि आपको लगता है: MSDWhole! = 0 के लिए, आपको "एन " मिल जाएगा। एन 0 समूह विभाजक के साथ समर्थित नहीं है। "{0: #, 0 ;;}" – Ruben

0

एक कस्टम विधि का उपयोग करें।

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

एक:

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

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

कोशिश स्वरूपण कर आप

3

स्वीकार किए जाते हैं जवाब को देखते हुए चाहते हैं, जबकि इस

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

की तरह और समारोह के अंदर बाध्यकारी एक समारोह कॉल करने के लिए अंतरिक्ष तीसरी स्थिति में रखा गया है, हालांकि तीसरे पॉजिटी में # लगा रहा है Trim() पर कॉल करने की आवश्यकता को खत्म कर देगा।

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

डेव, मैंने इस विचार की कोशिश की और यह बहुत अच्छा काम किया! ट्रिम छोड़ना निश्चित रूप से एक सुधार है। धन्यवाद! –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^