Как пропустить пустую строку, автоматически добавленную в DataGridView в цикле?
у меня есть простое приложение c#, в котором вы должны ввести данные в DataGridView
. Я реализовал некоторые валидаторы для столбцов, такие как значения null или нечисловые входные данные. Я делаю проверки после того, как кнопка была нажата 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;
}
}
}
пожалуйста помощь.
спасибо,
1 ответов
можно использовать IsNewRow
свойства строки:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow) continue;
// rest of your loop body ...
}