2011-03-14 3 views
8

लक्ष्य के साथ डेटाग्रिडव्यू रीफ्रेश नहीं कर सकता लक्ष्य:
एक बार बटन जोड़ने या हटाने पर क्लिक करने के बाद, डेटाग्रिडव्यू दस्तावेज़ से नवीनतम डेटा के साथ ताज़ा किया जाना चाहिए।बाइंडिंगसोर्स

समस्या:

DataGridView को हटाने या नए डेटा जोड़कर परिवर्तन करने के बाद रिफ्रेश नहीं किया जा सकता है।

मैं बाध्यकारी स्रोत का उपयोग कर रहा हूं जो डेटाग्रिडव्यू के डेटासोर्स से जुड़ा हुआ है।

मैंने विभिन्न समाधानों के साथ सब कुछ करने की कोशिश की और विभिन्न मंचों से सलाह पढ़ी लेकिन फिर भी मैं इस समस्या को हल नहीं कर सकता।

मैंने इन वाक्यविन्यास "बाइंडिंगसोर्स.सेटसेट बाइंडिंग्स (झूठी)", "बाइंडिंगसोर्स.रफ्रेश()" आदि का उपयोग करने का भी प्रयास किया लेकिन कोई परिणाम नहीं। नीचे

लिंक:

How to refresh a bindingsource

http://www.eggheadcafe.com/community/aspnet/2/10114324/datagridview-refresh-from-another-form.aspx

http://blogs.msdn.com/b/dchandnani/archive/2005/03/15/396387.aspx

http://bytes.com/topic/c-sharp/answers/812061-problem-refresh-datagridview

bSrcStock.DataSource = myProductrepository.GetAllProductList(); 


    dgridStock.DataSource = null; 
    dgridStock.DataSource = bSrcStock; 
    bSrcStock.ResetBindings(true); 


    dgridStock.Columns[0].Width = 101; 
    dgridStock.Columns[1].Width = 65; 
    dgridStock.Columns[2].Width = 80; 
    dgridStock.Columns[3].Width = 120; 
    dgridStock.Columns[4].Width = 90; 
+0

आपका डाटाग्रिड क्या है? – Purplegoldfish

+0

एफवाईआई; आपको dgridStock.DataSource = null सेट करने की आवश्यकता नहीं है; यदि आपने बाध्यकारी स्रोत लागू नहीं किया है तो यह ऐसा करने का एक तरीका है! – Coops

+1

क्या आपकी सूची आइटम प्रकार INotifyPropetyChanged इंटरफ़ेस को कार्यान्वित करता है? –

उत्तर

2

मैं इस एक ही मुद्दा का सामना किया और पता चला है refreshDataGridView विधि के लिए कॉल समस्या यह है कि एक स्थिर कन्स्ट्रक्टर के अंदर बाध्यकारी स्रोत के प्रारंभ के साथ (कक्षा एक सिंगलटन थी)। इसे समझने पर, मैंने कोड को कॉलिंग ईवेंट में स्थानांतरित कर दिया और आखिरकार इसे शून्य को असाइन करने या स्पष्ट विधि को कॉल करने की आवश्यकता के बिना काम किया। उम्मीद है की यह मदद करेगा।

1

कॉलम (जब तक आप वास्तव में परिभाषित करने के लिए कोई ज़रूरत नहीं चाहते हैं ...) के लिए

तो बस हर बार जब आप जोड़ सकते हैं या अपनी सूची से कुछ निकालना ...

public List<CustomItem> ciList = new List<CustomItem>(); 

    CustomItem tempItem = new CustomItem(); 
    tempItem.Name = "Test Name"; 

    ciList.add(tempItem); 
    refreshDataGridView(); 

    private void refreshDataGridView() 
    { 
     dataGridView1.DataSource = typeof(List<>); 
     dataGridView1.DataSource = ciList; 
     dataGridView1.AutoResizeColumns(); 
     dataGridView1.Refresh(); 
    }