2012-11-15 20 views
10

मैं अपने एप्लिकेशन में एक डब्ल्यूपीएफ डाटाग्रिड का उपयोग कर रहा हूं जहां शीर्षलेख पर क्लिक करके कॉलम को सॉर्ट किया जा सकता है।डब्ल्यूपीएफ डेटाग्रिड: कॉलम सॉर्टिंग साफ़ करें

मैं सोच रहा था कि कॉलम के सॉर्टिंग को प्रोग्रामेटिक रूप से साफ़ करने का कोई तरीका था या नहीं?

मैंने कॉलम को सॉर्ट करने और फिर MyDataGrid.Items.SortDescriptions साफ़ करने का प्रयास किया, लेकिन वह संग्रह खाली था (भले ही एक कॉलम सॉर्ट किया गया हो)।

मैं भी करने की कोशिश की:

MyDataGridColumn.SortDirection = null; 

समस्या यह है कि स्तंभ संकेत चला गया है है, लेकिन छंटाई अभी भी होता है सेल को संपादित और पंक्तियों स्विचन जब।

क्या कॉलम के प्रकार को साफ़ करने का कोई तरीका नहीं है?

संपादित करें (स्पष्टता के लिए): समस्या यह है कि यदि उपयोगकर्ता एक ही कॉलम हेडर पर फिर से क्लिक करता है तो मैं सॉर्टिंग को फिर से अनुमति देना चाहता हूं, इसलिए CanUserSort को गलत पर सेट करना समस्याग्रस्त हो जाएगा, भले ही यह किया गया हो XAML। संक्षेप में, मैं जो करने का प्रयास कर रहा हूं, सॉर्ट किए गए कॉलम में एक सेल को संशोधित करने के बाद पंक्तियों को आदेश देने से रोक दिया जाता है। मैं उपयोगकर्ता को हेडर पर फिर से क्लिक करने के लिए मजबूर करना चाहता हूं।

+0

मुझे नहीं पता था कि जब आप पंक्ति संपादित करते हैं तो यह सहारा लेगा। – Paparazzi

+0

@ ब्लैम येप करता है। यदि आप एक और पंक्ति चुनते हैं, तो संपादित किया गया सेल उसकी पंक्ति को क्रमबद्ध करेगा। –

+0

संग्रह दृश्य से साफ़ करें उदाहरण के लिए: http://stackoverflow.com/questions/5401912/how-to-remove-wpf-grid-sort-arrow-after-clearing-sort-descriptions – Vibes

उत्तर

4

सभी स्तंभों के लिए false करने के लिए CanUserSort सेट करें -

foreach (var a in MyDataGrid.Columns) 
{ 
    a.CanUserSort = false; 
} 
+0

क्या यह कॉलम को रोक नहीं पाएगा फिर से हल किया जा रहा है? मैं सिर्फ एक विशेष कॉलम के लिए सॉर्टिंग को हटाने की तलाश में हूं, सभी कॉलम के लिए इसे अक्षम नहीं करता हूं। –

+0

तो, क्या आप नहीं चाहते हैं? –

+0

क्या आप इस संपत्ति को xaml में इस विशेष कॉलम के लिए सेट नहीं कर सकते हैं? –

-2

डेटा ग्रिड आप में से XAML कोड में CanUserSortColumns = "false" जोड़ सकते हैं। फिर noboady rumtime पर किसी भी कॉलम को सॉर्ट करने में सक्षम हो जाएगा।

+0

इस सवाल में पहले से ही उल्लेख किया गया है कि यह तकनीक उपयुक्त नहीं है। – Ren

+0

@Ren - यह DataGridView के सॉर्टिंग को अक्षम करने के लिए एक छोटा कोड स्निपेट है। के लिए (int i = 0; मैं Vaibhav

-2

यह DataGridView की सॉर्टिंग को अक्षम करने के लिए एक छोटा कोड स्निपेट है।

using System.Windows.Data; 
using System.ComponentModel; 

ICollectionView view = CollectionViewSource.GetDefaultView(grid.ItemsSource); 
if (view != null) 
{ 
    view.SortDescriptions.Clear(); 
    foreach (DataGridColumn column in grid.Columns) 
    { 
     column.SortDirection = null; 
    } 
} 

मूल स्रोत::

for (int i = 0; i < dataGridView1.ColumnCount; i++) 
{ 
    dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; 
} 
+0

यदि आप प्रश्न पढ़ते हैं, तो आप देखेंगे कि यह लेखक नहीं चाहता है। जब उपयोगकर्ता कोशिकाओं में संपादन करते हैं तो वह स्वचालित रूप से कॉलम सॉर्टिंग को रोकना चाहता है लेकिन वह सॉर्टिंग सक्षम करना छोड़ना चाहता है ताकि उपयोगकर्ता टेबल की तरह सॉर्ट करने के लिए कॉलम शीर्षक पर क्लिक कर सकें। – Ren

10

यहाँ आप क्या जरूरत है https://stackoverflow.com/a/9533076/964053

क्या मैं जानना चाहता हूँ कि क्या एम $ एक ClearSort() विधि डाल नहीं करने के लिए सोच रहा था है ...

1

एक्सएएमएल में आप इसे इस कोड का उपयोग कर बंद कर सकते हैं।

<DataGridTextColumn Header="Header Name" CanUserSort="False"/> 
संबंधित मुद्दे