我正在使用C#开发Windows窗体应用程序。
我有一个DataGridView
的表单,您可以添加/删除条目,条目包含可编辑的Qty
列,然后是Save
按钮。
点击Save
后,我想过滤DataGridView
的{{1}}条目,然后通知用户列表中有0.00 Qty
,否则继续保存。 (请在点击保存之前查看表单的屏幕截图)
我在下面的代码中有以下代码:
0.00 Qty
我的问题是此行发生了 private void SaveBtn_Click(object sender, EventArgs e)
{
if (isWithZeroQty() == true)
{
MessageBox.Show("Please check Quantity","System Alert",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else
{
// Will do the saving..
}
}
private bool isWithZeroQty()
{
DataRow[] result = (enrollmedsDataGridView.DataSource as DataTable).Select("Qty = 0.00 OR Qty = 0");
if (result.Count() > 0)
{ return true; }
else
{ return false; }
}
:
NullReferenceException
根据我的进一步调查,在将DataGridView转换为DataTable DataRow[] result = (enrollmedsDataGridView.DataSource as DataTable).Select("Qty = 0.00 OR Qty = 0");
时会发生NullReferenceException。
是因为DataGridView是DataBounded到BindingSource吗?
如果是这样,我该如何解决这个问题。
提前感谢您的帮助。
答案 0 :(得分:0)
我仍然无法找到上述代码中出现NullReferenceException的原因。
但是作为一种解决方法,我没有过滤和转换DataGridView
到DataTable
,而是在每一行上使用foreach来检查单元格Qty
是否有0 or 0.00
值我的结局很好。
见下面的代码:
private bool isWithZeroQty()
{
int zeros = 0;
foreach (DataGridViewRow row in enrollmedsDataGridView.Rows)
{
if ((row.Cells["Qty"].Value.ToString() == "0") || (row.Cells["Qty"].Value.ToString() == "0.00"))
{
zeros = 1;
}
}
if (zeros > 0)
{ return true; }
else
{ return false; }
}