मेरे पास एक डीजीवी है जो एक डेटाटेबल से जुड़ा हुआ है जो नीचे दिए गए कोड के माध्यम से पॉप्युलेट किया गया है:

Dim dt As DataTable = FetchMyDataTable(SQLQuery, ConnectionString)
Me.DataSet.Table.Rows.Clear()
For Each dr As DataRow In dt.Rows
Dim cost As Double = dr("cost")

सभी मानों को एक वेरिएबल में सहेजा जाता है, फिर वेरिएबल्स को सीधे डेटाटेबल में फ़ील्ड में असाइन किया जाता है या गणना में उपयोग किया जाता है जिसे सीडीबीएल () के रूप में लपेटा जाता है:

Dim rw As DataRow = Me.DataSet.Table.NewRow
rw("cost") = cost

या

rw("nett") = CDbl(Math.Round((cost + varaiable1 + varaiable2) * (1 + (varaiable3/ 100)), 2))

DGV में फ़ील्ड को मान के बाद सही चिह्न की आवश्यकता होती है और यह या तो % या £ होता है:

rw("cost") = "£ " & rw("cost")

या

rw("profit") = rw("profit") & " %"

मेरे पास दो विधियां हैं जहां एक डीजीवी में सभी मूल्यों पर संकेत जोड़ता है और दूसरा जो हटा देता है। उपयोगकर्ता द्वारा DGV में मान बदलने के बाद और AddSigns() करने के बाद मैं कोई भी पुनर्गणना करने से पहले RemoveSigns() निष्पादित करता हूं।

अब DGV में फ़ील्ड DataGridViewAutoFilterTextBoxColumn कॉलम प्रकार हैं, चाहे वह कुछ भी अनिश्चित को प्रभावित करता हो, लेकिन जब मैं किसी एक कॉलम को सॉर्ट करने का प्रयास करता हूं तो वे प्रॉपर को सॉर्ट नहीं करते हैं, उदा। मूल्य £ 8.40 £ 90.20 से ऊपर होगा और फिर नीचे £ -12.00 होगा। मुझे इसकी आवश्यकता है इसलिए यह क्रमबद्ध होगा ताकि यदि आरोही पहले नकारात्मक हो और फिर मूल्य ऊपर जा रहा हो और यदि अवरोही हो तो उच्चतम मूल्य और नकारात्मक पर समाप्त हो।

संपादित करें: मेरा मानना ​​​​है कि ऐसा इसलिए हो सकता है क्योंकि डेटासेट.टेबल जिसमें डीजीवी बाध्य है, में कॉलम स्ट्रिंग्स के लिए कॉन्फ़िगर किए गए हैं, न कि डबल्स। जब मैं उन्हें डबल्स होने के लिए अद्यतन करता हूं तो मैं फ़ील्ड में £ और% चिह्न जोड़ने में असमर्थ हूं। क्या मैं यहां के बाद जो हासिल कर रहा हूं उसे हासिल करने का कोई और तरीका है?

0
Pawel 11 मार्च 2020, 19:28
जैसा कि जिमी ने कहा, जिस संपत्ति से आप जुड़ते हैं वह एक डबल होनी चाहिए, फिर बस कॉलम Format = "C" या "C2" सेट करें यदि आप इसे सिस्टम सेटिंग पर भरोसा करने के बजाय दो दशमलव स्थानों पर मजबूर करना चाहते हैं। देखें मानक संख्यात्मक प्रारूप स्ट्रिंग्स.
 – 
Michael Csikos
12 मार्च 2020, 09:03
आप दोनों को धन्यवाद - ऐसा लगता है कि सी 2 को स्वरूपण 'पैसा' प्रदर्शित करने वाले क्षेत्रों पर काम कर रहा है। प्रतिशत प्रदर्शित करने के संदर्भ में, फ़ील्ड में प्रदर्शित मान पहले से ही प्रतिशत मानों पर काम कर रहे हैं और उन्हें केवल% चिह्न की आवश्यकता है। मैं देखता हूं कि "पी" प्रारूप मान को 100 से गुणा करता है और फिर मानक संख्यात्मक प्रारूप स्ट्रिंग्स के अनुसार प्रतिशत के रूप में प्रदर्शित होता है - क्या इसे छोड़ने का कोई तरीका है?
 – 
Pawel
12 मार्च 2020, 12:28
आपके सुझाव ने मुझे उस समस्या को ठीक करने की अनुमति दी है जो मैं कर रहा था। क्या आप इसे एक उत्तर के रूप में पोस्ट करना चाहते हैं ताकि मैं इसे इस मुद्दे के समाधान के रूप में चिह्नित कर सकूं?
 – 
Pawel
12 मार्च 2020, 13:20

1 उत्तर

सबसे बढ़िया उत्तर

@Jimi की टिप्पणी समस्या का समाधान साबित हुई -

आपको प्रतीकों को जोड़ने की आवश्यकता नहीं है, आपको डबल (या दशमलव) फ़ील्ड की आवश्यकता है और आउटपुट को अपनी पसंद के अनुसार प्रारूपित करने के लिए DataGridView.CellFormatting ईवेंट का उपयोग करें। आप [DataGridViewTextBoxColumn] का भी उपयोग कर सकते हैं। संपत्ति को प्रारूपित करें। महत्वपूर्ण यह है कि आपका डेटा सही प्रारूप में संग्रहीत है। उपयोगकर्ता की आवश्यकताओं के आधार पर प्रस्तुति (यूआई में प्रदान किए गए मान) को जरूरत पड़ने पर नियंत्रित किया जा सकता है (उदाहरण के लिए, उपयोगकर्ता £ के बजाय $ या € की अपेक्षा कर सकता है, इसलिए आपको मुद्रा रूपांतरण टूल की भी आवश्यकता है। ये निश्चित रूप से नहीं होंगे स्वरूपित तारों पर काम करते हैं)। साथ ही, डेटा को सॉर्ट करें, नियंत्रण नहीं।

0
Pawel 30 जुलाई 2021, 10:57