2014-11-04 4 views
6

मेरे पास एक साधारण सी # एप्लिकेशन है जिसमें आपको DataGridView में डेटा दर्ज करना होगा। मैंने कॉलम के लिए कुछ वैधकर्ताओं को लागू किया है, जैसे शून्य मान या गैर-संख्यात्मक इनपुट। मैं चेकों के बाद एक बटन से foreach (DataGridViewRow row in dataGridView1.Rows) {...}लूप में डेटाग्रिड व्यू में स्वचालित रूप से खाली पंक्ति को कैसे छोड़ा जाए?

प्रेस कर दिया गया है मैं समस्या यह है कि यह भी DataGridView की अंतिम पंक्ति को मान्य करने की कोशिश करता है का सामना करना पड़ रहा है, हालांकि यह एक स्वचालित रूप से जोड़ा गया है और रिक्त है कर दिया जाए। तो मैं यहां एक लूप में फंस गया हूं ...

private void button1_Click(object sender, EventArgs e) 
{ 
    foreach (DataGridViewRow row in dataGridView1.Rows) 
    { 
     string inputItemNr; 
     string inputMHD; 
     string inputCharge; 
     string inputSupplNr; 
     string inputPrnCnt; 
     UInt32 itemnr; 
     DateTime mhd; 
     string mhdFormat = "yyMMdd"; 
     string batch; 
     byte prncnt; 

     if (row.Cells[0].Value == null) 
     { 
      MessageBox.Show("Enter item number"); 
      return; 
     } 
     else 
     { 
      inputItemNr = row.Cells[0].Value.ToString(); 
     } 

     if (!UInt32.TryParse(inputItemNr, out itemnr)) 
     { 
      MessageBox.Show("Incorrect item number: " + inputItemNr); 
      return; 
     } 

     if (row.Cells[1].Value == null) 
     { 
      MessageBox.Show("Enter MHD"); 
      return; 
     } 
     else 
     { 
      inputMHD = row.Cells[1].Value.ToString(); 
     } 

     if (!DateTime.TryParseExact(inputMHD, mhdFormat, CultureInfo.InvariantCulture, 
      DateTimeStyles.None, out mhd)) 
     { 
      MessageBox.Show("Incorrect MHD: " + inputMHD); 
      return; 
     } 

     if (row.Cells[2].Value == null) 
     { 
      inputCharge = DateTime.Now.ToString("yyMMdd"); 
     } 
     else 
     { 
      inputCharge = row.Cells[2].Value.ToString(); 
     } 

     if (row.Cells[3].Value == null) 
     { 
      batch = inputCharge; 
     } 
     else 
     { 
      inputSupplNr = row.Cells[3].Value.ToString(); 
      batch = inputCharge + " " + inputSupplNr; 
     } 

     if (row.Cells[4].Value == null) 
     { 
      inputPrnCnt = "1"; 
     } 
     else 
     { 
      inputPrnCnt = row.Cells[4].Value.ToString(); 
     } 

     if (!byte.TryParse(inputPrnCnt, out prncnt)) 
     { 
      MessageBox.Show("Incorrect print count: " + inputPrnCnt); 
      return; 
     } 
    } 
} 

कृपया मदद करें।

धन्यवाद,

उत्तर

14

आप पंक्ति के IsNewRow संपत्ति इस्तेमाल कर सकते हैं:

foreach (DataGridViewRow row in dataGridView1.Rows) 
{ 
    if (row.IsNewRow) continue; 
    // rest of your loop body ... 
} 
+0

काम करता है, धन्यवाद! – Geo

+0

यह जानकारी Google के माध्यम से खोजने के लिए आश्चर्यजनक रूप से कठिन थी जब तक कि सही न हो; मुझे नहीं पता था कि यह संपत्ति तब तक अस्तित्व में थी जब तक कि आपका जवाब इसे मेरे ध्यान में लाए। इस गैर-स्पष्ट लेकिन आश्चर्यजनक रूप से सरल युक्ति को साझा करने के लिए बहुत धन्यवाद। –

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