2009-04-30 15 views
38

मेरे पास एक डाटाग्रिडव्यू है जो मैं एक एसक्यूएल टेबल से बांधता हूं, उस डीवी में मेरे पास ये विशेषताएं हैं: आईडी, नाम और मूल्य। जब मैं नाम कॉलम के सॉर्टमोड को स्वचालित रूप से सेट करता हूं और मैं इस कॉलम के शीर्षलेख पर क्लिक करता हूं, तो मैं इस डीवी को नाम के पहले अक्षर पर सॉर्ट कर सकता हूं, इस तरह मैं अपने पहले अक्षर (Acumulator, नाव, कोकाकोला, इंजन आदि)।सी # में डेटा ग्रिड व्यू कॉलम सॉर्ट करें? (विंडोज़ फॉर्म)

कॉलम नाम के शीर्षलेख पर क्लिक किए बिना यह काम करने का कोई तरीका है। मैं कुछ कोड देख रहा हूं जो फॉर्म लोड होने पर यह काम करेगा।

+1

जवाब था: this.dataGridView1.Sort (this.dataGridView1.Columns [ "नाम"], ListSortDirection.Ascending); – AXheladini

उत्तर

82

DataGridView "क्रमबद्ध करें" कहा जाता है पर एक विधि नहीं है।

+0

में एसक्यूएल कथन में सॉर्टिंग में खपत के समय के बारे में क्या है और वह सॉर्ट करना चाहता है एसक्यूएल स्टेटमेंट्स को बाध्यकारी के बाद निष्पादित करते समय इसे ऑर्डर करने के बारे में क्या करें! मुझे लगता है कि यह अधिक समय का उपभोग करेगा – Ahmy

+0

हां, अहम ठीक है, प्रदर्शन के विपरीत यह डेटाबेस पक्ष पर सॉर्ट करना बेहतर है। इसलिए, यदि आप डीबी के साथ सीधे बातचीत करने के लिए एसक्यूएल का उपयोग कर रहे हैं, तो अपनी क्वेरी के अंत तक एक ऑर्डर दें। मैं केवल सवाल का जवाब दे रहा था। कोड में डीजीवी को सॉर्ट करने का यह तरीका है। – BFree

+0

ठीक है अगर एक्सेलडिनी को इसकी आवश्यकता है तो यह ठीक है, लेकिन मैं अपने प्रश्न से समझ गया कि उसे यूआई में इसकी आवश्यकता नहीं है, इसलिए मैं समय बचाने के लिए चाहता हूं कि मुझे खुशी है कि एक्सहेडडिनी को समाधान मिल गया है और यह हम अपने उत्तरों से क्या चाहते हैं – Ahmy

0

Datatable.Default.Sort संपत्ति का उपयोग करें और फिर इसे डेटाग्रिडव्यू में बाध्य करें।

3

आप नियंत्रित कर सकते डेटा डेटा नहीं दिया आदेश देने से SQL डेटाबेस से लौटे:

orderby [Name] 

आप अपने आवेदन से SQL क्वेरी निष्पादित आदेश डेटा नहीं दिया है। उदाहरण के लिए, एक फ़ंक्शन बनाएं जो प्रक्रिया को कॉल करता है या SQL को निष्पादित करता है और इसे पैरामीटर देता है जो ऑर्डरबाय मानदंड प्राप्त करता है। क्योंकि यदि आपने डेटाबेस से लौटाए गए डेटा का आदेश दिया है तो यह समय का उपभोग करेगा लेकिन इसे निष्पादित करने के बाद इसे ऑर्डर करें क्योंकि आप कहते हैं कि आप इसे यूआई से नहीं ऑर्डर करना चाहते हैं, जिसे आप रन टाइम में ऑर्डर करना चाहते हैं ताकि SQL को निष्पादित करते समय ऑर्डर करें क्वेरी।

this.dataGridView1.Sort(this.dataGridView1.Columns["Name"], ListSortDirection.Ascending); 

इस प्रोग्राम के रूप में तरह होगा अपने DataGridView:

+0

मैं स्वचालित रूप से डेटाग्रिडव्यू बाध्यकारी हूं, मैं क्वेरी का उपयोग नहीं करता हूं। क्या डेटास्रोत की क्वेरी तक पहुंचने और इसे सही करने का कोई तरीका है? – AXheladini

+0

मेरा मतलब है कि एसक्यूएल कथन जो डेटाबेस से पूछता है और डेटा को वापस लौटाता है, उसमें आपके द्वारा उपयोग की जाने वाली प्रक्रिया में सिंटैक्स ऑर्डरबी या डीएएल परत – Ahmy

8
dataGridView1.Sort(dataGridView1.Columns[0],ListSortDirection.Ascending); 
+1

मैं मानता हूं कि स्ट्रिंग इंडेक्स से बेहतर संख्या सूचकांक का उपयोग करके, यदि आप भविष्य में कॉलम नाम बदलते हैं, तो आपको स्ट्रिंग इंडेक्स भी बदलना होगा। – 123iamking

1

यह एक सरल है :)

dataview dataview1; 
this.dataview1= dataset.tables[0].defaultview; 
this.dataview1.sort = "[ColumnName] ASC, [ColumnName] DESC"; 
this.datagridview.datasource = dataview1; 
संबंधित मुद्दे