我有一个简单的c#应用程序,你必须在其中输入数据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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
请帮忙.
谢谢,
Tim*_*ter 19
您可以使用IsNewRow该行的属性:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow) continue;
// rest of your loop body ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5064 次 |
| 最近记录: |