在VB代码隐藏中从数据集中获取特定项/行时出错

时间:2013-05-17 19:07:20

标签: asp.net vb.net

我正在尝试运行SQL查询以从表中提取行。然后我需要从该表中的列获取单元格的值,并将其传递给另一个SQL查询。第二部分是失败的地方,我不知道为什么。

我的代码:

Dim var1 As Dataset1 = function1(value)
Me.DataGrid1.DataSource = var1
Me.DataGrid1.DataBind()
Dim var2 As Dataset2 = function2(var1.tables(0).rows(0).Item("Manufacturer").ToString())

function1基本上只执行一些操作,包括使用sql查询来填充Dataset1function2运行不同的sql查询,但需要使用Dataset1中的值来在WHERE子句中使用。

我得到的错误是第二行,它显示System.IndexOutOfRangeException: There is no row at position 0

我也尝试了var1.Container.Components.Item("Manufacturer").ToString()之类的东西。结果只是一个不同的错误。

我没有在这里包含sql查询,因为我知道它正在运行。我将第一个函数中的数据绑定到页面上的数据网格,然后使用DataBinder将数据从Dataset1获取到页面上,并且工作正常(我可以使用Databinder得到制造商的价值,所以我知道该列/单元格/值都存在于数据集中)。我不确定我现在做错了什么。

1 个答案:

答案 0 :(得分:0)

There is no row at position 0表示var1.tables(0)没有任何行。您的数据集是否包含多个表格?如果是这样,也许就像var1.tables(1).rows(0).Item("Manufacturer")?如果不是 - 这意味着您的function1(value)返回带有空表的数据集。