2008-11-04 20 views
6

में पहली पंक्ति के रूप में "नई पंक्ति डालें" को कैसे सेट करें मैं डेटाग्रिड व्यू को "पंक्ति में नई पंक्ति" पंक्ति प्रस्तुत करने की कोशिश कर रहा हूं ताकि अंतिम पंक्ति के बजाय ग्रिड में पहली पंक्ति हो। मैं ऐसा करने के बारे में कैसे जा सकता हूं, क्या यह नियंत्रण में भी संभव है?DataGridView

उत्तर

7

मुझे नहीं लगता कि डेटा ग्रिड के शीर्ष पर "नई पंक्ति" पंक्ति को स्थानांतरित करने का कोई तरीका है।

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

Dim myrow = existingDataTable.NewRow 

    existingDataTable.Rows.Add(myrow) 

    adp.Fill(existingDataTable) 
    With DataGridView1 
     .DataSource =existingDataTable 
    End With  
+0

हम्म कि काम कर सकता था मूल्य सेट हो जाएगा। मुझे यकीन नहीं है कि यह डाटाबेसिंग आदि के साथ कैसे काम करेगा, लेकिन मुझे इसके साथ थोड़ा सा प्रयोग करना होगा। –

1

आपको लगता है कि मौजूदा पंक्तियों के सभी से भी कम है नई पंक्ति के प्रमुख के लिए एक अस्थायी मान असाइन कर सकते हैं? फिर उस कुंजी द्वारा डेटाव्यू सॉर्ट करें और दृश्य को अपने ग्रिड पर बाध्य करें।

मेरी टीम डेटाबेस संख्या में उस पंक्ति को डालने तक नकारात्मक संख्याओं को पंक्ति आईडी के रूप में उपयोग करती है। मुझे शीर्ष पर दिखाई देने वाली हमारी नई पंक्तियों को याद नहीं है, लेकिन हमारे पास यह भी आवश्यकता नहीं है।

1

और अगर बाकी सब विफल रहता है hacky तरह से कम करने के लिए डेटा जोड़ने के लिए पंक्ति प्रस्तुत घटना मौजूदा एक के ऊपर एक अलग एक पंक्ति DataGridView डाल करने के लिए, अपने कॉलम क्लोन, और तार ऊपर होगा एक :)

4

यदि आप बाध्य नियंत्रण का उपयोग नहीं कर रहे हैं, तो dgvItems.Rows.Insert() आपको यह निर्दिष्ट करने की अनुमति देगा कि पंक्ति कहां डाली गई है।

आप एक बाध्य DataGridView उपयोग कर रहे हैं, एक तरह से सक्रिय बिना इच्छित स्थान में डेटा स्रोत के लिए नई पंक्ति जोड़ने हैं:

BoundTable.Rows.InsertAt (BoundTable.Rows.NewRow(), RowLocation) ;

मुझे वर्तमान पंक्ति पर संपादन होने पर एक दिलचस्प रिश्ते मिल गया है और पंक्ति डेटास्रोत (यानी आपने डेटा दर्ज करना शुरू कर दिया है) के लिए प्रतिबद्ध नहीं किया है, ऐसा लगता है कि सक्रिय सेल को स्थानांतरित करना आवश्यक है पंक्तियों को डालने से पहले परिवर्तन करने के लिए एक और पंक्ति।

+0

@ जेफ सीडर गलती से आपकी टिप्पणी पूरी करने से पहले पोस्ट किया गया है, लेकिन आपके विवरण पर किसी के लिए अस्पष्ट रहेंगे। हालांकि यह मेरी राय में ऐसा करने का सबसे प्रभावी तरीका है यदि आप अद्वितीय कुंजी पहचानकर्ताओं के साथ काम नहीं करना चाहते हैं। –

1

क्या आप RowDataBound ईवेंट का उपभोग कर रहे हैं? यदि ऐसा है, तो आप यह देखने के लिए जांच सकते हैं कि क्या आप कॉलम हेडर पंक्ति को बाध्य कर रहे हैं और फिर उसके नीचे एक पंक्ति डालने के लिए उचित कोड जोड़ें।

इस तरह जब आपकी सामग्री पंक्तियां बाध्य होती हैं, तो आइटम इंडेक्स शामिल होने के साथ कोई भ्रम नहीं होता है, हालांकि मैं कुछ डेटाकेज़ या कुछ मामले का उपयोग करने की सलाह दूंगा। इसके अलावा, RowDatabound ईवेंट का उपयोग करने से आपको "डालने वाली पंक्ति" उपलब्ध हो सकती है जब उपयोगकर्ता ग्रिड व्यू में पंक्तियों के एक अलग ब्लॉक पर पेज करता है।

-2

मुझे लगता है कि आप मानते हैं कि जब आप एक नई पंक्ति जोड़ना चाहते हैं, तो आप डिफ़ॉल्ट रूप से तालिका के नीचे तालिका के शीर्ष पर पंक्ति को डालने की इच्छा रखते हैं? ठीक है अगर ऐसा है, तो आपको सॉर्टिंग या प्रमुख मानों से निपटने की ज़रूरत नहीं है; बस सम्मिलित विधि के साथ इस तरह के रूप कार्य करें:

किसी तरह

tmpRow में पंक्ति समायोजित करें 'एक नई पंक्ति

मंद tmpRow = नई DataGridViewRow

बनाएँ'।ऊंचाई = _cellRectSize

'शीर्ष पर DataGridView (यानी dgvEditor) करने के लिए पंक्ति जोड़ें (सूचकांक = 0)

Me.dgvEditor.Rows.Insert (0, tmpRow)

वर्क्स मेरे लिए एक आकर्षण की तरह, उम्मीद है कि यह किसी और की मदद करता है!

1

जैसा कि ई-ई ने कहा, Add के बजाय Insert का उपयोग करें। इस तरह आप निर्दिष्ट कर सकते हैं कि आप नया रिकॉर्ड कहां जोड़ना चाहते हैं। ग्रिड के शीर्ष पर एक नया रिकॉर्ड जोड़ने के लिए, बस Insert(0) का उपयोग करें।

DataGridView1.Rows.Insert(0) इस चोटी पर एक नया रिकॉर्ड जोड़ना होगा, हमेशा

DataGridView1.Rows(0).Cells(n).Value = "abc" इस n स्तंभ पर