如何在 DataSet 中设置单元格?帮助!
Posted
技术标签:
【中文标题】如何在 DataSet 中设置单元格?帮助!【英文标题】:How do I set a cell in a DataSet? HELP! 【发布时间】:2010-06-22 11:27:05 【问题描述】:我正在尝试通过代码在 DataSet 中设置“System.Int32”类型的单元格,我的尝试如下所示:
int aCarID = 5; // as an example...
// points out the row that I want to manipulate - I guess this is what doesn´t work???
int insertIndex = myDataSet.tableCars.Rows.Count
myDataSet.tableCars.Rows[insertIndex]["CarID"] = aCarID;
发生的情况是:我收到“System.IndexOutOfRangeException”异常。
只要你提供答案,你就可以说我很愚蠢......
更新!
是的,我正在尝试创建一个新行,这是真的 - 这就是我不使用“-1”的原因。
那么创建新行的语法是什么?
如果我使用 tableCars.Rows.Add(...) 我需要为 Add-function 提供一个“DataRow Row”,但我没有提供 - 还没有! (第 22 条)
新更新! 糟糕,找到了 - “NewRow()” :-)
【问题讨论】:
【参考方案1】:您知道 C# 中的索引从零开始吗?这意味着如果您的表有 3 行,您将尝试访问第 4 行,因为 insertIndex = 3。 试试 insertIndex - 1。
编辑:由于您正在尝试添加一个新行并且已经知道如何执行此操作,因此也不要忘记将这些更改保存到数据库中(我假设这就是您想要做的)。最简单的方法是设置用于填充 DataSet(或实际上是 DataSet 中的 DataTable)的 DataAdapter 的 UpdateCommand 属性。 您还可以使用 DbCommandBuilder 的子类生成更新命令。
【讨论】:
【参考方案2】:这是一个经典的一对一:有效行位于索引 0... Rows.Count -1
如果要创建新行,请先致电tableCars.AddNew()
。
【讨论】:
【参考方案3】:来自MSDN:
当尝试访问具有超出数组边界或小于零的索引的数组或集合的元素时,将引发 IndexOutOfRangeException 异常。
所以问题是当你像 Christian 所说的那样使用错误的索引时。
【讨论】:
【参考方案4】:首先尝试创建新行,因为您想要访问不存在的行,或者您必须将您的信息插入到索引的行中(insertIndex - 1)。 Datarow 索引的第一个位置是 0,和数组一样。
【讨论】:
【参考方案5】:您使用的是强类型数据集,但您的插入代码实际上是针对非强类型数据集的。
以下代码将为您工作(并且更容易!)
var insertRow = myDataSet.tableCars.NewtableCarsRow();
insertRow.CarID = aCarID;
myDataSet.AcceptChanges();
就是这样!
注意:此代码从 .NET 版本 3.5 开始有效。对于以前的版本,将 var 关键字替换为 tableCarsRow(我假设您没有在 DataSet 设计器中自定义数据行的默认名称)。
【讨论】:
以上是关于如何在 DataSet 中设置单元格?帮助!的主要内容,如果未能解决你的问题,请参考以下文章
如何在 collectionView 单元格中设置 NSLayoutConstraint 常量?