2012-01-08 10 views
6

कॉलम हेडर को छोड़कर मैं सभी डेटाग्रिडव्यू पंक्तियों को कैसे हटा सकता हूं?फॉर्म लोड पर सभी DataGridView पंक्तियों को कैसे निकालें?

मैंने कोशिश की:

dataGridView1.Rows.clear(); 

लेकिन यह काम नहीं करता।

मैं पंक्तियों पर पाश की कोशिश की और RemoveAt विधि का उपयोग करें, लेकिन यह सभी पंक्तियों को दूर नहीं करता:

private void Form5_Load(object sender, EventArgs e) 
{  
    dataGridView1.AutoGenerateColumns = true; 
    SqlConnection con = new SqlConnection(@"Data Source=.\myserver;Initial Catalog=test;Integrated Security=True"); 
    adapter = new SqlDataAdapter("SELECT id as [#], description as [Description], unit as [Unit], amount as [Amount], unitPrice as [Unit Price], total as [Total] FROM tbl_poMaterials", con); 
    adapter.SelectCommand.CommandType = CommandType.Text; 
    DataTable tb = new DataTable(); 
    adapter.Fill(tb); 
    SqlCommandBuilder builder = new SqlCommandBuilder(adapter); 
    dataGridView1.DataSource = tb; 

    dataGridView1.Columns[0].Width = 30; 
    dataGridView1.Columns[0].ReadOnly = true; 
    dataGridView1.Columns[1].Width = 660; 

    for (int i = 0; i < tb.Rows.Count; i++) 
    { 
     tb.Rows.RemoveAt(i); 
    } 
} 
+0

परिभाषित करें "लेकिन यह काम नहीं करता है", क्या होता है? –

+0

[DataGridView.Clear()] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3744882/datagridview-clear) –

उत्तर

3

अपने ग्रिड एक DataTable या कुछ अन्य डेटा स्रोत के लिए बाध्य कर रहा है तो आप इसे साफ करने की आवश्यकता , ग्रिड नहीं, अन्यथा Rows.clear() विधि इसे करने का सही और सबसे अच्छा तरीका है।

+0

(int i = 0; i user891757

+0

आपके पास डेटाटाइडव्यू एक डेटाटेबल से जुड़ा हुआ है, इसलिए डेटाटेबल को साफ़ करें: tb.clear() – aleroot

7

आपको डेटासोर्स या डेटाटेबल को साफ़ करने की आवश्यकता है, न कि डेटाग्रिडव्यू।

dataGridView.DataSource = null; 
dataGridView.Refresh(); 

या

dataTable.Clear(); 
dataGridView.Refresh(); 
+0

दूसरा समाधान मेरे लिए काम किया गया है, धन्यवाद दोस्त .. :-) – Praditha

13

यह मेरे लिए काम किया:

do 
{ 
    foreach (DataGridViewRow row in dataGridViewError.Rows) 
    { 
     try 
     { 
     dataGridViewError.Rows.Remove(row); 
     } 
     catch (Exception) { } 
    } 
} while (dataGridViewError.Rows.Count > 1); 
+0

अजीब, क्यों और प्रत्येक लूप काम नहीं कर रहा है और क्यों यह एक काम करता है? लेकिन अच्छी बात यह है कि यह काम करता है! –

+0

एक साल और कुछ महीने बाद से धन्यवाद।मैंने अपने डीजीवी पर पंक्ति संग्रह पर 'foreach' का उपयोग करने का प्रयास किया लेकिन मुझे एक अपवाद मिल रहा था जब वह उस "खाली" पंक्ति को हटाने का प्रयास करेगा। अगर मैंने नल के लिए चेक जोड़ा, तो यह केवल हर दूसरी पंक्ति को हटा रहा था? हालांकि, यह काम करता है। – sab669

3

एक ही मुद्दा मैं कई तरीके की कोशिश की लेकिन सफल नहीं हो सकता है के लिए। जैसा कि उत्तर में से एक में कहा गया है:

for(int i = 0; i < myDataGridView.Rows.Count; i++) 
{ 
    myDataGridView.Rows.RemoveAt(i) 
} 

वास्तव में पंक्ति को हटा देगा लेकिन अगली पंक्ति पिछली पंक्ति में स्थानांतरित हो जाएगी! तो, उपरोक्त दृष्टिकोण पंक्तियों की संख्या का आधा हिस्सा हटा देता है! इसलिए, जब तक यह शून्य न हो जाए तब तक आपको कार्रवाई को दोहराना होगा!

वैकल्पिक रूप से, अंतिम पंक्ति से पहले तक हटाने का प्रयास किया। यह काम करता हैं!

for(int i = myDataGridView.Rows.Count - 1; i >= 0; i--) 
{ 
    myDataGridView.Rows.RemoveAt(i); 
} 
4

मैं

dataGridViewResult.Rows.Clear(); 

का उपयोग हटाने स्तंभों के बिना हर पंक्तियों स्पष्ट करने के लिए।

0
int rowCount = dtg.Rows.Count; 
     for (int i = rowCount - 1; i >= 0; i--) 
     { 
      DataGridViewRow dr = dtg.Rows[i]; 
      dtg.Rows.Remove(dr); 
     } 
+0

कृपया अपना उत्तर संपादित करें, और समझाएं कि यह समस्या को हल करता है। – Ben

1

// इस

int rowCount = dataGridView1.Rows.Count; 

for (int i = 0; i < rowCount; i++) 
{ 
    dataGridView1.Rows.RemoveAt(0); 
} 

आपका समाधान फ्लॉप काम, क्योंकि हर जब हालत i < rowCount के लिए पाश जांच के लिए, rowCount पहले से ही एक के बाद dataGridView1.Rows.RemoveAt(i) के परिणामस्वरूप की कमी होगी, काम करना चाहिए। तो पंक्तियों में से केवल आधा हटा दिया गया होगा।

+0

कोड ब्लॉक प्राप्त करने के लिए कृपया प्रत्येक कोड लाइन के सामने 4 रिक्त स्थान का उपयोग करें। इसके अलावा "आपका समाधान" स्पष्ट नहीं है। –

1

while(dataGridView1.Rows.Count >1) { dataGridView1.Rows.RemoveAt(0); }

+0

होना चाहिए (dataGridView1.Rows.Count> 0) – Missy

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