2012-03-07 15 views
7

मेरे पास डेटास्रिड व्यू डेटासोर्स (एसक्यूएल) से डेटा से भरा है। अब मैं एक नई पंक्ति जोड़ना चाहते हैं, लेकिन मैं नहीं कर सकता, क्योंकि नए डेटा घिरे DataGridView में नहीं जोड़ा जा सकता है ...डेटाग्रिडव्यू में नई पंक्ति कैसे जोड़ें?

मैं करने के लिए कोशिश कर रहा था:

dataGridView1.Source = null; 
dataGridView1.Rows.Add("1"); 

लेकिन यह मेरे पिछले साफ करता है तालिका में डेटा। पिछले डेटा को हटाने के बिना नई पंक्ति जोड़ने के लिए इसे कैसे करें?

उत्तर

5

जब आप सेट DataSource propertynull करने के लिए, आप अनिवार्य रूप से DataGridView से सभी डेटा हटा रहे हैं (क्योंकि यह क्या अब और करने के लिए बाध्य करने के लिए पता नहीं है)।

आपके पास दो विकल्प हैं। पहला अंतर्निहित डेटा स्रोत अपडेट करना है। आइए मान लें कि यह DataTable है। इस मामले में, आप की तरह कुछ करना चाहते हैं:

DataTable dt = dataGridView1.Source as DataTable; 
dt.Rows.Add(new object[] { ... }); 

और फिर DataGridView (ध्यान दें कि अगर आप कुछ के लिए बाध्य नहीं कर रहे हैं कि INotifyCollectionChanged interface को लागू नहीं करता है परिवर्तन पर लेने जाएगा, तो आपको ग्रिड को रीफ्रेश करने के लिए ResetBindings method पर कॉल करने के लिए)।

दूसरा विकल्प DataGridView पंक्तियों का प्रबंधन करने देना है। आप मैन्युअल रूप से DataGridViewRowCollectionRows property द्वारा दिया पर Add method का उपयोग कर प्रत्येक आइटम जोड़ कर ऐसा कर सकते हैं:

foreach (var item in source) 
{ 
    dataGridView1.Rows.Add("1", "2", "3", ...); 
} 

मैं यह नहीं कहूंगा दूसरा समाधान इष्टतम है, लेकिन यह काम करेंगे।

अंत में, यह मानते हुए कि आप DataTable (या अंतर्निहित डेटा स्रोत से डेटा के कुछ अन्य भौतिककरण) के लिए बाध्यकारी हैं, यह अंतर्निहित डेटा स्रोत (यह एक अलग प्रश्न होगा) को अपडेट करने के बारे में कुछ भी नहीं करता है।

1

संक्षिप्त उत्तर है, आप नहीं करते हैं।

जब आप अपना DataSource शून्य पर सेट करते हैं, तो आपने अपने DataGridView और अपने डेटा स्रोत के बीच लिंक तोड़ दिया है, इसलिए इसका डेटा जारी नहीं रहेगा। आप DataGridView पर एक पंक्ति नहीं जोड़ सकते हैं क्योंकि यह अंतर्निहित DataSource की स्थिति का प्रतिनिधित्व करना है; आप पहले से डाटाबेसिंग के उद्देश्य को हराकर, अपनी बैकिंग स्टोर के साथ अपनी तालिका को सिंक से बाहर करने के लिए प्रभावी ढंग से पूछ रहे हैं।

यदि आप बैकिंग स्टोर में कोई पंक्ति जोड़ना चाहते हैं, तो आपको DataSource में एक पंक्ति जोड़नी चाहिए, न कि आपके DataGridView में।

+0

टीएनएक्स, क्या आप मुझे दिखा सकते हैं कि मेरे डेटा स्रोत में पंक्ति कैसे जोड़ें? मेरे पास डेटा के साथ एक और डेटाग्रिड व्यू है जो मैं अपने पहले ग्रिड व्यू में जोड़ना चाहता हूं .. – Bodi

+0

यदि आपकी बैकिंग स्टोर एक SQL तालिका है, तो मुझे लगता है कि आप उस तालिका में केवल एक INSERT करेंगे। –

+0

यह एसक्यूएल से नहीं है .. यह मेरा कुछ डेटा है जो पहली तालिका में जोड़ने और इसे प्रिंट करने के लिए उत्पन्न होता है;) – Bodi

0

शायद आप इसे मैन्युअल रूप से और विस्तृत करना चाहते हैं? कुछ इस तरह?

 DataSet ds = new DataSet(); 
     OleDbDataAdapter adapter = null; 
     adapter = new OleDbDataAdapter("SELECT * FROM WHERE", conn); 
     adapter.Fill(ds); 
     dataGridView1.ColumnCount = 5; //how many columns returns your SQL query? starts with 0 

     dataGridView1.Columns[0].Name = "COl-1"; 
     dataGridView1.Columns[1].Name = "COl-2"; 
     dataGridView1.Columns[2].Name = "COl-3"; 
     dataGridView1.Columns[3].Name = "COl-4"; 
     dataGridView1.Columns[4].Name = "COl-5"; 

     DataTable dt = ds.Tables[0]; 

     foreach (DataRow dr in dt.Rows) 
     { 
      dataGridView1.Rows.Add(
      (dr["COL_HEADER_NAME1"].ToString()), 
      (dr["COL_HEADER_NAME2"].ToString()), 
      (dr["COL_HEADER_NAME3"].ToString()), 
      (dr["COL_HEADER_NAME4"].ToString()), 
      (dr["COL_HEADER_NAME5"].ToString())); 
     } 
0

तुम बस पंक्तियों संग्रह की विधि

me.datagridview1.rows.add("first","second","third"); 

जोड़ते हैं तो आपको सरणी संग्रह के साथ आइटम की किसी भी राशि में जोड़ सकते हैं का उपयोग करके पंक्तियाँ जोड़ें।

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