【发布时间】:2012-01-10 21:11:27
【问题描述】:
这是我的代码
Dim dt As DataTable = New DataTable("Intervenant")
For Each column As DataControlField In grdvIntervenants.Columns
dt.Columns.Add(New DataColumn(column.HeaderText))
Next
Dim dr As DataRow
For Each row As GridViewRow In grdvIntervenants.Rows
dr = dt.NewRow()
dr.Item(0) = row.Cells(0)
dr.Item(1) = row.Cells(1)
dr.Item(2) = row.Cells(2)
dr.Item(3) = row.Cells(3)
dr.Item(4) = row.Cells(4)
dr.Item(5) = row.Cells(5)
dt.Rows.Add(dr)
Next
'add new intervenant
dr = dt.NewRow()
dr.Item(0) = Nom
dr.Item(1) = Prenom
dr.Item(2) = Courriel
dr.Item(3) = False
dr.Item(4) = True
dr.Item(5) = IdIntervenant
dt.Rows.Add(dr)
grdvIntervenants.DataSource = dt
grdvIntervenants.DataBind()
我正在使用 VB.NET 作为背景代码在 ASP.NET 中进行开发。我在使用 Windows 7 企业版的 vs2008(如果该信息有任何帮助)
我刚刚重新开始做 VB.Net 并且我第一次使用没有数据库的 gridview,所以也许我错过了一些东西。基本上,我正在尝试将 DataRow (dr) 添加到 DataTable (dt),然后将所述 DataTable 放入 Gridview (grdvIntervenants)。
我的第一步是获取gridview 并将其所有数据放入DataTable。然后我创建一个用变量填充的 DataRow(dr),并将所述 DataRow 添加到 DataTable 中。之后,我将DataTable作为DataSource并绑定GridView。
问题是我的 GridView 显示行但它们是空的。 在调试时,我发现这个错误在所有 DataRow.Item 旁边: “为了评估索引属性,该属性必须是合格的,并且参数必须由用户显式提供” 在网上搜索它,我发现这是一个有时会发生的问题vb 用户,但我找不到任何解决我的问题的方法。
我没有完全理解错误,所以我尝试了许多不同的方法将数据添加到 DataRow 中,但无济于事。我还尝试了不同的方式来添加列,认为索引问题可能来自那里,但同样,问题仍然存在。现在,我发现奇怪的是我的 DataRow 的 Item 属性给出了引用的错误,但我在 DataRow 的 ItemArray 中看到了这些值。
我还发现dataTable的columns属性旁边出现了同样的错误。
当我尝试使用 DataBinder 从我的 rowDatabound 方法中的 DataSource 访问数据时,它给了我空结果...
所以我的问题是:我缺少什么?
【问题讨论】:
-
这没有意义。首先,您从网格中的数据创建数据表,然后使用数据表填充网格?
-
您应该真正显示 GridView 的 aspx 标记。顺便说一句,如果您打算启用分页,您应该重新考虑您的方法(例如查询数据源),因为 GridView.Rows 仅返回当前页面的行。
-
@subt13,我从网格中的数据创建一个数据表,在我刚刚创建的数据表中添加一行,然后将现在多行的数据表放入网格中,基本上,添加一个行到网格
标签: asp.net vb.net visual-studio-2008