باستخدام تنسيق سلسلة .NET ، كيف يمكنني تنسيق سلسلة لعرض فارغة (سلسلة فارغة) ل Zero (0)؟

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

سؤال

أنا أستخدم databinder.eval التعبير في بيانات ASP.NET ، لكنني أعتقد أن هذا السؤال ينطبق على تنسيق السلسلة في .NET بشكل عام. طلب العميل أنه إذا كانت قيمة السلسلة 0 ، فلا ينبغي عرضها. لدي الاختراق التالي لإنجاز هذا:

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

أود تغيير {0:N0} تنسيق التعبير حتى أتمكن من القضاء على عبارة IIF ، لكن لا يمكنني العثور على أي شيء يعمل.

هل كانت مفيدة؟

المحلول

تحتاج إلى استخدام فاصل قسم, ، مثله:

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

لاحظ أن القسم السلبي فقط يمكن أن يكون فارغًا ، لذلك أحتاج إلى وضع مساحة في 0 الجزء. (إقرأ ال توثيق)

نصائح أخرى

بالنظر إلى الإجابة المقبولة:

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

يتم وضع مساحة A في الموضع الثالث ، ولكن وضع أ # في الموقف الثالث سوف يلغي الحاجة إلى الاتصال Trim().

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

استخدم طريقة مخصصة.

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

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

حاول استدعاء وظيفة أثناء الربط مثل هذا

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

وداخل الوظيفة ، اجعل التنسيق الذي تريده

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top