セッション状態を使用して GridView の並べ替えを設定しようとすると、突然 GridView に DataKeys がなくなるのはなぜですか? 私がしたことは、次のコードを Page_Init に入れることだけでした。
Dim SortDirection As String = Session("SortDir")
Dim sortExpression As String = Session("SortExp")
If Not SortDirection Is Nothing AndAlso Not sortExpression Is Nothing Then
If (SortDirection = "asc") Then
GridView1.Sort(sortExpression, WebControls.SortDirection.Ascending)
Else
GridView1.Sort(sortExpression, WebControls.SortDirection.Descending)
End If
End If
しかし、これをコメントアウトすると、GridView に DataKeys があるため、他のメソッドがクラッシュすることはなくなります。どうしてこれなの?
アップデート
これは、上記のコードが配置されているときに動作を停止する正確な行です。
Dim UserID = GridView1.DataKeys(e.RowIndex).Value.ToString
デバッガによると、GridView1 には列がありますが、DataKeys カウントは 0 です。受け取るエラーは次のとおりです。
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index