2008-11-25 11 views
12

मैं VB.Net में DataGridView नियंत्रण में नया रिकॉर्ड कैसे जोड़ूं?मैं VB.Net में DataGridView में रिकॉर्ड कैसे जोड़ूं?

मैं डेटासेट या डेटाबेस बाध्यकारी का उपयोग नहीं करता हूं। मेरे पास 3 फ़ील्ड के साथ एक छोटा सा फॉर्म है और जब उपयोगकर्ता ठीक क्लिक करता है तो उन्हें डेटाग्रिड व्यू नियंत्रण में एक नई पंक्ति के रूप में जोड़ा जाना चाहिए।

उत्तर

3

मुझे लगता है कि आपको कोड में डेटासेट/डेटाटेबल बनाना चाहिए और उस पर ग्रिड बांधना चाहिए।

0

जो फ़ंक्शन आप खोज रहे हैं वह 'सम्मिलित करें' है। यह उस पैरामीटर के रूप में लेता है जिस पर आप सम्मिलित करना चाहते हैं, और नई पंक्ति मानों के लिए उपयोग करने के लिए मानों की एक सरणी। विशिष्ट उपयोग में शामिल हो सकते हैं:

myDataGridView.Rows.Insert(4,new object[]{value1,value2,value3}); 

या उस प्रभाव के लिए कुछ।

26

आप ग्रिड के अंत तक पंक्ति जोड़ने के लिए उपयोग जोड़ें() पंक्तियाँ संग्रह का विधि ...

DataGridView1.Rows.Add(New String(){Value1, Value2, Value3}) 

आप एक partiular स्थिति में पंक्ति सम्मिलित करना चाहते हैं चाहते हैं सम्मिलित() पंक्तियाँ संग्रह का विधि (के रूप में GWLlosa ने यह भी कहा) ...

DataGridView1.Rows.Insert(rowPosition, New String(){value1, value2, value3}) 

का उपयोग मैं आप का उल्लेख आप डेटा बाइंडिंग नहीं कर रहे थे पता है, लेकिन आप एक साथ एक जोरदार टाइप डाटासेट में परिभाषित किया गया है, तो एकल डेटा अपनी परियोजना में atable, तो आप उस का उपयोग करें और कुछ अच्छा दृढ़ता से टाइप किया तरीकों इस चीज कर के बजाय ग्रिड तरीकों पर भरोसा करने के लिए मिल सकता है ...

DataSet1.DataTable.AddRow(1, "John Doe", true) 
2

मैं DataGridView कि यह bindingsource इस्तेमाल किया से डेटा स्रोत कास्ट करने के लिए प्रयास करते हैं त्रुटि एक्कोर कास्टिंग नहीं कर सकते हैं:

---------- समाधान ------------

'मैं DataGridView के साथ कि बाँध bindingsource से कास्टिंग बदल

'कोड यहां

Dim dtdata As New DataTable() 

dtdata = CType(bndsData.DataSource, DataTable) 
0

अपने DataGridView एक DataSet के लिए बाध्य है, तो आप बस एक नई पंक्ति अपने DataGridView प्रदर्शन में नहीं जोड़ सकते। यह अब ठीक से काम करेगा।

इसके बजाय आप इस कोड के साथ DataSet में नई पंक्ति जोड़ना चाहिए:

BindingSource[Name].AddNew() 

इस कोड को भी स्वत: ही आपके DataGridView प्रदर्शन में एक नई पंक्ति जोड़ना होगा।

+0

क्या आप वाकई सही हैं? मेरे बाध्यकारी स्रोत में कोई तरीका नहीं है 'AddNew() '। – acme

0

यदि आप डेटासेट का उपयोग करने के बिना एक गूंगा सरणी से अधिक वर्णनात्मक कुछ ऐसा उपयोग करना चाहते हैं तो निम्नलिखित उपयोगी साबित हो सकता है। यह अभी भी दृढ़ता से टाइप नहीं किया गया है, लेकिन कम से कम यह संकलक द्वारा चेक किया गया है और बहुत अच्छी तरह से refactored संभाल लेंगे।

Dim previousAllowUserToAddRows = dgvHistoricalInfo.AllowUserToAddRows 
dgvHistoricalInfo.AllowUserToAddRows = True 

Dim newTimeRecord As DataGridViewRow = dgvHistoricalInfo.Rows(dgvHistoricalInfo.NewRowIndex).Clone 

With record 
    newTimeRecord.Cells(dgvcDate.Index).Value = .Date 
    newTimeRecord.Cells(dgvcHours.Index).Value = .Hours 
    newTimeRecord.Cells(dgvcRemarks.Index).Value = .Remarks 
End With 

dgvHistoricalInfo.Rows.Add(newTimeRecord) 

dgvHistoricalInfo.AllowUserToAddRows = previousAllowUserToAddRows 

यह ध्यान देने योग्य है कि उपयोगकर्ता AllowUserToAddRows अनुमति होना आवश्यक है या इस काम नहीं करेगा लायक है। यही कारण है कि मैं मौजूदा मान को संग्रहीत करता हूं, इसे सत्य पर सेट करता हूं, अपना काम करता हूं, और उसके बाद इसे रीसेट करता हूं कि यह कैसा था।

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