2011-04-07 9 views
5

मैं सी # के साथ एक प्रोग्राम बना रहा हूं, और इसमें एक डाटाग्रिडव्यू घटक शामिल किया है। डेटाग्रिडव्यू में निश्चित मात्रा में कॉलम (2) हैं, जिन्हें मैं दो अलग-अलग सरणी में सहेजना चाहता हूं। हालांकि पंक्तियों की मात्रा बदलती है। मैं ये कैसे करूं?सी # डेटाग्रिडव्यू कॉलम एक सरणी में

उत्तर

3

इस प्रयास करें:

ArrayList col1Items = new ArrayList(); 
ArrayList col2Items = new ArrayList(); 

foreach(DataGridViewRow dr in dgv_Data.Rows) 
{ 
    col1Items.Add(dr.Cells[0].Value); 
    col2Items.Add(dr.Cells[1].Value); 
} 
+0

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

11

dataGridView1 नाम के एक DataGridView मान लिया जाये और आप, आप कुछ इस तरह कर सकते हैं तार के सरणी में पहले दो कॉलम की सामग्री की प्रतिलिपि करना चाहते हैं:

string[] column0Array = new string[dataGridView1.Rows.Count]; 
string[] column1Array = new string[dataGridView1.Rows.Count]; 

int i = 0; 
foreach (DataGridViewRow row in dataGridView1.Rows) { 
    column0Array[i] = row.Cells[0].Value != null ? row.Cells[0].Value.ToString() : string.Empty; 
    column1Array[i] = row.Cells[1].Value != null ? row.Cells[1].Value.ToString() : string.Empty; 
    i++; 
} 
+0

+1, शायद थोड़ा और अधिक कुशल। –

+0

@ निश्चित रूप से यदि वह .NET 2.0+ का उपयोग कर रहा था, तो हम ऐरे या ऐरेलिस्ट के बजाय सूची का उपयोग करने की सलाह देंगे। –

+0

मेरी तरफ से सच है, लेकिन मैं इस धारणा के तहत था कि यदि आप हाथ से पहले अपने संग्रह की लंबाई जानते हैं जो आमतौर पर एक ऐरे का उपयोग करने के लिए बेहतर/अधिक कुशल होता है (हालांकि प्रदर्शन लाभ ध्यान देने योग्य नहीं हो सकता है)। –

3

मैंने जय के उदाहरण का इस्तेमाल किया और इसे आसान निर्यात के लिए एक ही सरणी में सभी पंक्तियों को स्टोर करने के लिए बदल दिया। अंत आप आसानी से [0,0] सेल 0 से स्ट्रिंग प्राप्त करने के लिए उपयोग कर सकते हैं LogArray में स्तंभ 0.

 // create array big enough for all the rows and columns in the grid 
     string[,] LogArray = new string[dataGridView1.Rows.Count, dataGridView1.Columns.Count]; 

     int i = 0; 
     int x = 0; 
     foreach (DataGridViewRow row in dataGridView1.Rows) 
     { 
      while (x < dataGridView1.Columns.Count) 
      { 
       LogArray[i, x] = row.Cells[x].Value != null ? row.Cells[x].Value.ToString() : string.Empty; 
       x++; 
      } 

      x = 0; 
      i++; //next row 
     } 

मुझे आशा है कि मैं इस के साथ किसी की मदद की, इसकी मेरी पहली बार किसी भी कोड पोस्टिंग ऑनलाइन कभी, । इसके अलावा मैंने उम्र में कोडिंग शुरू नहीं की है।

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