2009-05-27 4 views
7

मेरे पास डेटाग्रिड व्यू है, जो केवल पढ़ने के लिए सेट नहीं है। इसके किसी भी कॉलम को केवल पढ़ने के लिए सेट नहीं किया गया है, और जिस वस्तु को बाध्य किया गया है वह केवल पढ़ने के लिए सेट नहीं है। फिर भी, मैं DataGridView आइटम संपादित नहीं कर सकता? DataGridView की DataSource प्रॉपर्टी को ReadOnlyCollection <> पर सेट किया गया है, लेकिन मैं केवल यूआई से नहीं, तत्वों को प्रोग्रामेटिक रूप से बदल सकता हूं। क्या चल रहा है?मैं अपने डेटाग्रिड व्यू में मान क्यों संपादित नहीं कर सकता, भले ही यह केवल पढ़ने के लिए सेट न हो?

+0

आप तत्वों को संपादित करने का प्रयास कैसे कर रहे हैं? ऐसे व्यवहार क्या हैं जो आपको लगता है कि आपको देखना चाहिए कि आप नहीं देखते हैं? – David

उत्तर

9

यह पता चला है कि यदि आपका डेटाग्रिड व्यू रीडऑनली कोलेक्शन से जुड़ा हुआ है, तो भले ही आप संग्रह में किसी भी आइटम को प्रोग्रामिक रूप से संपादित कर सकें, डेटाग्रिड व्यू आपको मूल्यों को बदलने से प्रतिबंधित कर देगा। मुझे यकीन नहीं है कि यह व्यवहार जानबूझकर है, लेकिन इसके लिए कुछ देखना है।

+0

पुन: पेश नहीं कर सकता ... नीचे देखें। ReadOnlyCollection के साथ <> कोई भी संपादन योग्य नहीं है ... –

+1

मेरा बुरा, यह पता चला है कि "एक कॉलम जिसे बदला जा सकता है" वास्तव में सभी डेटासेट के साथ सही ढंग से बाध्य नहीं था। – GWLlosa

+1

+1 मेरी इच्छा है कि मैंने सुबह सुबह एसओ खोजा था। इससे पहले कि मैंने इसे समझ लिया, इससे पहले मुझे दीवार के खिलाफ अपने सिर को टक्कर देने का घंटों लगा। – Rytmis

3

"डेटाग्रिड व्यू आपको कुछ मूल्यों (तारों) को बदलने से प्रतिबंधित करेगा लेकिन अन्य मूल्यों (बूल)" बिंदु से नहीं, बल्कि यह एक विस्तारित टिप्पणी (इसलिए विकी) है। न तो संपादन योग्य है; यह एक List<T> और दोनों संपादित किए जाने योग्य बनाने के ...:

using System; 
using System.Collections.ObjectModel; 
using System.Windows.Forms; 
class Test 
{ 
    public string Foo { get; set; } 
    public bool Bar { get; set; } 

    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     var data = new ReadOnlyCollection<Test>(
      new[] { 
       new Test {Foo="abc", Bar=true}, 
       new Test {Foo="def", Bar=false}, 
       new Test {Foo="ghi", Bar=true}, 
       new Test {Foo="jkl", Bar=false}, 
      }); 
     Application.Run(
      new Form { 
       Text = "ReadOnlyCollection test", 
       Controls = { 
        new DataGridView { 
         Dock = DockStyle.Fill, 
         DataSource = data, 
         ReadOnly = false 
        } 
       } 
      }); 
    } 
} 
+0

हूप्स। यह पता चला है कि "एक संपादन योग्य कॉलम" वास्तव में डेटाबेस कोड में एक टाइपो था, इसलिए यह वास्तव में "एक संपादन योग्य कॉलम था जो वास्तव में पूरे समय डेटा स्रोत से बंधे नहीं था।" – GWLlosa

2

आप अपने DataGridView के लिए बाध्य कर रहे हैं? एक बात यह है कि यदि आप किसी डेटाबेस से पूछे गए डेटासोर्स के रूप में एक लिंक सूची का उपयोग कर रहे हैं और आपके पास पूर्ण ऑब्जेक्ट नहीं है, तो गुण तब तक पढ़े जाते हैं जब तक आप चयन फ़ंक्शन में "नया" निर्दिष्ट नहीं करते हैं। आपकी पोस्ट में बहुत सारी जानकारी नहीं है। आशा है कि ये आपकी मदद करेगा।

2

मैं सिर्फ कल वी.एस. 2013 स्थापित, नवीनतम निर्माण (अद्यतन 5) और एक बग अभी भी बना हुआ है कि व्यवहार आपके द्वारा बताई का कारण बनता है संपादित कॉलम पर क्लिक करें।

बग के आसपास काम करने के लिए संक्षेप में, पहले सुनिश्चित करें कि डेटाग्रिडव्यू GUI- संपादन योग्य होने के लिए सेट है। इसमें विशेष रूप से नियंत्रण के ऊपरी दाएं भाग में फॉर्म डिजाइनर में छोटे तीर शामिल हैं। तीर ड्रॉप डाउन में एक विकल्प "संपादन सक्षम करें" है, यह सुनिश्चित करें कि यह सक्षम है। अब फॉर्म डिज़ाइनर में कॉलम को कुछ प्रमुख तरीके से संपादित करें (जैसे कॉलम जोड़ें या निकालें)। यही वह है, जब आप प्रोग्राम चलाते हैं तो आपको पता होना चाहिए कि जीयूआई संपादन अब काम कर रहा है।

इस बग को पुन: पेश करने के लिए, फॉर्म डिज़ाइनर के भीतर डेटाग्रिडव्यू नियंत्रण के ऊपरी दाएं भाग पर छोटे तीर का उपयोग करें, जिसे "संपादन सक्षम करें" को गलत पर सेट करने के लिए उपयोग किया जाता है। अब कॉलम में एक बड़ा बदलाव करें (जैसे कॉलम जोड़ें या निकालें)। प्रोग्राम संकलित करें और चलाएं। अब छोटे तीर पर वापस जाएं और "संपादन सक्षम करें" चेकबॉक्स को पुनः सक्षम करें। कार्यक्रम फिर से चलाएं। इस बिंदु पर बग खुद को प्रकट करता है, और आप पाएंगे कि डेटाग्रिडव्यू GUI- संपादन योग्य नहीं है भले ही आपने अन्यथा VS में कॉन्फ़िगर किया हो।

संबंधित मुद्दे

 संबंधित मुद्दे