在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;
似乎遇到了麻烦。
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
我说实话,你不是很清楚如何为表格创建列集合#InvoiceTableEdited'。您在OnUpdate中执行的操作是将字符串变量分配给表中具有给定索引和当前不存在的列的行。你基本上说这个字符串放入一个行号为' x'列名为" column1"。此时" column1"不存在。
我首先在InvoiceHandler.cs中创建您需要的列(假设它们是字符串):
invoiceTableEdited.Columns.Add("MyColumn1", typeof(string));
invoiceTableEdited.Columns.Add("MyColumn2", typeof(string));
显然,如果你有很多列而你不关心他们的名字,那么只需创建一个循环并以这种方式添加它们。这将为他们提供命名惯例" ColumnN",其中' N'是数字。然后,您可以通过引用其名称(" Column1"例如)或使用其索引为其指定名称。