سؤال

لدي GridView ASP.NET مع حدود ملزم بقيمة عشرية. يمكنني استخدام التعليمات البرمجية التالية لتنسيق الرقم العشري إلى قيمة العملة:

DataFormatString="{0:C}"

لدينا تطبيق مخصص ل Sermformatinfo، مما يزيل رمز العملة وتعديل الآلاف Seperator. عادة يتم تطبيق هذا التنسيق على هذا النحو:

myDecimal.ToString("C", myCustomNFI);

كيف يمكنني تحديد NumberFormatinfo مخصص على عنصر BentField في GridView؟

شكرا

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

المحلول

يمكن القيام بذلك باستخدام حقل محدد مخصص. ابدأ بصلات حدودية مخصصة. حاولت أدناه اتباع اتفاقية تسميةك.

namespace CustomBoundField
{
    public class NFIBoundField : System.Web.UI.WebControls.BoundField
    {
        protected override string FormatDataValue(object dataValue, bool encode)
        {
            if (dataValue == null || dataValue == System.DBNull.Value)
                return "";

            if (base.DataFormatString == string.Empty)
                return dataValue.ToString();

            // Format as you wish based on dataValue and DataFormatString argument
            return string.Format("{0}", dataValue);
        }
    }
}

تسجيل عنصر التحكم في ملف .aspx الخاص بك:

<%@ Register Namespace="CustomBoundField" TagPrefix="custom" %>

مراجع الحدود المخصصة داخل GridView الخاص بك:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
    <Columns>
        <custom:NFIBoundField  DataField="Price" HeaderText="Price" DataFormatString="{0:NFI}"/>
    </Columns>
</asp:GridView>

سوف ترغب في اللعب داخل FormatDatavalue () من أجل الحصول على التنسيق الذي تريده.

بضع تعليقات:

  • إذا كنت تريد ربط Boundfield المخصص الخاص بك للتعامل مع صيغ متعددة، وتحليل Base.DataFormatString للحصول على نوع التنسيق. بمعنى آخر، توفير {0: NFI} أو {0: NFI2} في مقدمة التعليمات البرمجية يمكن أن يؤدي إلى تنسيقات مختلفة إذا كنت تستوعب لهذا الغرض ضمن formatdatavalue.

  • قد ترغب في التفكير في إنشاء مزود التنسيق الخاص بك بدلا من وضع جميع منطق التنسيق الخاص بك مباشرة داخل وظيفة FormatDatAvalue.

يجب أن يعمل هذا النهج من أجلك على ما يرام. حظا سعيدا.

نصائح أخرى

محاولة مع field.dataformatstring = currencysymbol + "{0: #، ###. ##}"؛

انه يعمل بشكل جيد بالنسبة لي.

أنا لست متأكدا 100٪ لكنني لا أعتقد أنه يمكنك ذلك.

ستحتاج إلى استخدام حقل قالب وربطه بأحرف على RowDATABOUND بدلا من ذلك باستخدام Formatter المخصص الخاص بك. سعيد أن أثبت خطأ ....

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