Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从gridview填充临时表_C#_Asp.net_Gridview_Datatable_Nullreferenceexception - Fatal编程技术网

C# 无法从gridview填充临时表

C# 无法从gridview填充临时表,c#,asp.net,gridview,datatable,nullreferenceexception,C#,Asp.net,Gridview,Datatable,Nullreferenceexception,在gridview=>database update函数期间,我使用逐列转换为字符串,以便将数据作为整个命令字符串传递回数据库。我知道这听起来很复杂,所以这里有一个例子: 正在使用的类: InvoiceHandler.cs Default.aspx.cs 由于这是一个相当大的片段,下面是一个粘贴库: Default.aspx.cs: InvoiceHandler.cs: 在第一个转换点(InvoiceTableEdit.Columns[“Column1”].ColumnName=“@K_INV”

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

正在使用的类:
InvoiceHandler.cs

Default.aspx.cs

由于这是一个相当大的片段,下面是一个粘贴库:

Default.aspx.cs:

InvoiceHandler.cs:

在第一个转换点(
InvoiceTableEdit.Columns[“Column1”].ColumnName=“@K_INV”
)我得到一个NullReferenceException错误,可能是因为该方法在Default.aspx.cs中调用

handler.invoiceTableEdited=ViewState[“invoiceTable”]作为数据表;
handler.InvoiceTableEdit.Rows[row.RowIndex][“K_发票”]=sK_发票

看来有麻烦了


我必须怎么做才能解决这个问题?

老实说,不太清楚您是如何为“InvoiceTableEdited”表创建列集合的。在OnUpdate中,您所做的是将字符串变量分配给表中具有给定索引和当前不存在的列的行。您的基本意思是将这个字符串放入一个行号为“x”、列名为“column1”的单元格中。此时“column1”不存在

我将首先在InvoiceHandler.cs中创建所需的列,如下所示(假设它们是字符串):


显然,如果您有大量的列,并且不关心它们的名称,那么只需创建一个循环并以这种方式添加它们。这将为他们提供命名约定“ColumnN”,其中“N”是数字。然后,您可以通过引用它们的名称(例如“Column1”)或使用它们的索引为它们指定一个名称。

“似乎有问题”没有多大帮助。请尝试告诉我们错误或当前结果与预期结果的对比。您可能会遇到异常,因为您试图为InvoiceTableEdit的columns集合中的一列指定名称,但尚未创建任何列。@sr28是否确定?在Default.aspx.cs中,在方法
OnUpdate
中,我从
GridView
中的行中创建了这些列,这是我的错误。但是,在Default.aspx.cs中,您正在创建[“column1”]等,在InvoiceHandler.cs中,您尝试将名称分配给[“column1”]。尝试将其更改为[“column1”]。@sr28我会忽略列名。为了匿名,我不得不匆忙地把它们都换了。我看了看它们到底在做什么,意识到我不需要额外的桌子。事实上,我已经在
onupdate()
的开头将数据作为字符串从gridview中提取出来,所以我正在使用这些字符串。我非常感谢你的帮助,你说得对,记忆中不存在必要的列。
invoiceTableEdited.Columns.Add("MyColumn1", typeof(string));
invoiceTableEdited.Columns.Add("MyColumn2", typeof(string));