VB.NET 2008中的BindingNavigator

时间:2010-01-18 08:11:59

标签: vb.net

我有这个DataGridView和一个BindingNavigator .. 每当我添加一个新条目时,它都会返回一个错误: 'column'newsID'不允许空值。'

但在我的MySQL数据库中,newsID列设置为AutoIncrement。 我该如何解决这个问题?

谢谢!

这是我的代码:

Public Class FormNews
    Private Sub FormNews_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'UCWebDataSet.news' table. You can move, or remove it, as needed.
         Me.NewsTableAdapter.Fill(Me.UCWebDataSet.news)
    End Sub

    Private Sub SaveToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripButton.Click
        Me.Validate()
        Me.NewsBindingSource.EndEdit()
        Me.NewsTableAdapter.Update(Me.UCWebDataSet)
    End Sub
End Class

2 个答案:

答案 0 :(得分:0)

您使用的是linq还是数据集?

如果是这样,您是否使用设计器来创建数据集?您需要做的是指定要插入的查询以返回生成的ID输出。

此链接可帮助您更新数据适配器以解决此问题:

MSDN Forum Post

如果你使用linq道歉,我的回答是无关紧要的。

编辑:刚刚意识到你正在使用MySql。你需要做一些不同的事情来获得自动增量值,我不记得mysql是否与设计师合作......

答案 1 :(得分:0)

问题是添加新记录时您不知道数据库使用的自动增量值。我对基础SQL Server 2005数据库有同样的问题。

但是,必须有一些配置类型化数据集的方法(我想在该字段的属性中),因为当我在另一个项目上尝试它时,所有突然的新记录自动编号为-1, - 2,等ID。

插入数据库后,获得了实际值,并替换了临时值。

然而,这可能仅适用于我在其他项目中使用LINQ to SQL ...

您可能会尝试用虚拟值填充它(例如负滴答计数等),然后在插入数据库后自己设置/检索“真实”ID。