我在网上搜索并找到了示例,但我仍然做对了。我在datagrid上有一个多数据键,我得到索引超出范围错误。有人会帮助我吗?提前谢谢。
有我的aspx
<asp:datagrid id="dgrTrans" runat="server" autogeneratecolumns="False" gridlines="Both" borderstyle="NotSet" cssclass="dgrd w97p" cellpadding="2"
horizontalalign="center" datakeyNames="ID, Description" >
我的代码可以检索ItemDataBound上的值
Select Case e.Item.ItemType
Case ListItemType.Item, ListItemType.AlternatingItem, ListItemType.EditItem
Dim currentItem As DataGridItem = CType(e.Item, DataGridItem)
Dim dKey As DataKey = Me.dgrTranscripts.DataKeys(currentItem.ItemIndex)
Dim cn As String = dKey("Description").ToString()
end select
我也尝试了以下代码,但是我得到“从字符串转换”“到'整数'是无效的。”错误
Dim cn As String = dgrTranscripts.DataKeys(e.Item.DataItem("Description)).ToString
答案 0 :(得分:0)
您的情况下的索引只能是0或1,因为只有两个键。您正在尝试使用等于currentitem.ItemIndex的索引来检索DataKey,它可以与您拥有的许多项目一样大,因此您将获得超出范围的错误。您需要使用0或1作为DataKey索引。我不能给你一个确定的答案,因为你没有具体说明你想要做什么......
编辑:
使用ItemDataBound
事件而不是DataBound
,并遍历每一行以获取其值。
以下是GridView
Protected Sub GridView1_RowDataBound(sender As Object, e As EventArgs) Handles GridView1.DataBound
For Each row As GridViewRow In GridView1.Rows
Dim cn = GridView1.DataKeys(row.RowIndex).Value
Next
End Sub
在ItemDataBound
上,DataGrid还不知道还有密钥。它们将在DataBound