1

我有以下应用程序,它根据搜索加载客户记录。然后可以使用显示的字段添加新发票。

但是当我去添加一个新的发票记录时,我在 invoiceNumber 列上得到一个“noNullAllowedException”。我不确定为什么会收到此错误,因为在添加新发票时,我将默认值 -1 更改为“11”,例如并更改其他默认发票选项。

我检查了列属性以检查它是否源于冲突的设置,但它似乎很好。有谁知道我在哪里验证错误,它给出了这个结果?

默认表单设置:

发票用户输入:

结果错误:

数据集架构

这是发票添加方法背后的代码:

private void addInvoice_Click(object sender, EventArgs e)
{
   // Check that the line item data is valid
   if (IsValidLineItem())
   {
      // Add a new row to the InvoiceLineItems table
      lineItemsBindingSource.AddNew();

      // Set the values of the row in the data grid
      int rowIndex = lineItemsDataGridView.Rows.Count - 1;
      DataGridViewRow row = lineItemsDataGridView.Rows[rowIndex];

      DataGridViewCell cell = row.Cells[0];
      cell.Value = 1;
      cell = row.Cells[1];
      cell.Value = productIDComboBox.SelectedValue; // not Index
      cell = row.Cells[2];
      cell.Value = unitPriceTextBox.Text;
      cell = row.Cells[3];
      cell.Value = quantityTextBox.Text;
      cell = row.Cells[4];
      cell.Value = Convert.ToDecimal(unitPriceTextBox.Text) * Convert.ToDecimal(quantityTextBox.Text);    

      // Save the line item to the table
      lineItemsBindingSource.EndEdit();

      // Calculate the invoice total
      this.GetInvoiceTotal();

      // Prepare for the next entry
      quantityTextBox.Text = "";
      quantityTextBox.Focus();
   }
}
4

1 回答 1

0

显然,其中一项任务是将单元格值设置为null

cell.Value = productIDComboBox.SelectedValue; // not Index
...
cell.Value = unitPriceTextBox.Text;
...
cell.Value = quantityTextBox.Text;

如果您知道哪一列是“InvoiceNumber”,那么您就是罪魁祸首。

于 2013-10-29T19:41:37.767 回答