无法从gridview填充临时表

本文关键字:填充 临时表 gridview | 更新日期: 2023-09-27 18:17:20

在gridview =>数据库更新函数期间,我使用逐列转换到字符串,以便将数据作为整个命令字符串传递回数据库。我知道这听起来很复杂,所以这里有一个例子:

正在使用的类:
InvoiceHandler.cs
Default.aspx.cs

由于这是一个相当大的代码片段,所以这里是一个pastebin:

Default.aspx.cs: http://pastebin.com/Y3fJZ36Z

InvoiceHandler.cs: http://pastebin.com/ZsdAnDxr

在转换的第一点(invoiceTableEdited.Columns["Column1"].ColumnName = "@K_INV";),我得到一个NullReferenceException错误,假设是因为方法调用在Default.aspx.cs

handler.invoiceTableEdited = ViewState["invoiceTable"] as DataTable; handler.invoiceTableEdited.Rows[row.RowIndex]["K_INVOICE"] = sK_INVOICE;

似乎遇到了麻烦。

我必须做什么来解决这个问题?

无法从gridview填充临时表

我将是诚实的,这不是很清楚你是如何试图创建列集合表'InvoiceTableEdited'。看起来你在OnUpdate中做的是你将一个字符串变量赋值给表中具有给定索引和当前不存在的列的行。你基本上是说把这个字符串放入一个单元格,行号是x,列名是column1。此时"column1"不存在。

我会创建列,你需要首先在InvoiceHandler.cs这样(假设他们是字符串):

invoiceTableEdited.Columns.Add("MyColumn1", typeof(string));
invoiceTableEdited.Columns.Add("MyColumn2", typeof(string));

显然,如果你有很多列,而你不关心它们的名字,那么就创建一个循环,然后添加它们。这将给它们命名约定"ColumnN",其中"N"是数字。然后,您可以通过引用它们的名称(例如"Column1")或使用它们的索引为它们分配名称。