我目前有一个gridview,我可以用查询填充。在按钮上单击我想再次使用新值运行查询,并将新信息添加到gridview中已显示的内容。我试图通过将当前在gridview中的信息复制到数据表中然后向表中添加行然后重置gridview上的绑定并刷新gridview来尝试这样做。问题是我在尝试添加新行时遇到错误(System.Data.NoNullAllowedException:'ColumnName'不允许空值。
以下是我尝试用于此过程的代码。任何帮助将不胜感激。
Dim EpicorCM As New SqlCommand(JobSelect, EpicorCon)
EpicorCon.Open()
Dim EpicorReader As SqlDataReader = EpicorCM.ExecuteReader
Dim JobInfoTable As New DataTable
JobInfoTable = CType(dgvJobInfo.DataSource, DataTable).Copy
JobInfoTable.Rows.Add(EpicorReader)
dgvJobInfo.AutoGenerateColumns = True
dgvJobInfo.DataSource = JobInfoTable
dgvJobInfo.Refresh()
EpicorCon.Close()
答案 0 :(得分:1)
您正尝试将SqlDataReader
添加到Rows
集合中,但这不起作用。它只会编译,因为Add()
方法的重载为params
的{{1}}。
幸运的是Object
有一种加载阅读器的方法。而不是:DataTable
,请执行以下操作:
JobInfoTable.Rows.Add(EpicorReader)
顺便说一句,命令和读者是Disposable资源,因此您可以通过不在JobInfoTable.Load(EpicorReader)
块或Using
块中处置它们来泄漏内存。