Asp.net Gridview分页的问题

Asp.net Gridview分页的问题,asp.net,vb.net,Asp.net,Vb.net,我在asp.net中使用了Gridview_PageIndexchange事件。我使用的代码如下: gridFileDetails.PageIndex = e.NewPageIndex Dim index As Integer = Convert.ToInt32(e.CommandArgument) Dim row As GridViewRow = gridFileDetails.Rows(index) 在运行时单击下一页时,它会生成一个错误: 类型的例外 发生“System.Invalid

我在asp.net中使用了Gridview_PageIndexchange事件。我使用的代码如下:

gridFileDetails.PageIndex = e.NewPageIndex
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = gridFileDetails.Rows(index)
在运行时单击下一页时,它会生成一个错误:

类型的例外 发生“System.InvalidCastException” 在FFK.DLL中,但未在用户中处理 代码

其他信息:无法强制转换 类型的对象 'System.Web.UI.WebControl.ContentPlaceHolder' 打字 “System.Web.UI.WebControl.GridViewRow”

在RowCommand事件中

我使用了以下RowCommand事件:

Protected Sub gridFileDetails_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gridFileDetails.RowCommand

    Dim row As GridViewRow = CType(CType(e.CommandSource, Control).NamingContainer, GridViewRow)
    Dim rowkey As DataKey = Me.gridFileDetails.DataKeys(row.DataItemIndex)
    Dim key As String = rowkey(0).ToString()
    If e.CommandName = "FileStatus" And e.CommandArgument <= 0 Then
        Response.Redirect("FFKFile.aspx?FileId=" + key)
    ElseIf e.CommandName = "TradexStatus" And e.CommandArgument <= 0 Then
        Response.Redirect("TradeX.aspx?FileId=" + key)
    ElseIf e.CommandName = "BondStatus" And e.CommandArgument <= 0 Then
        Response.Redirect("BondMaster.aspx?FileId=" + key)
    ElseIf e.CommandName = "FDStatus" And e.CommandArgument <= 0 Then
        Response.Redirect("FrmFileDocument.aspx?FileId=" + key)
    ElseIf e.CommandName = "InvoiceStatus" And e.CommandArgument <= 0 Then
        Response.Redirect("InvoiceMaster.aspx?FileId=" + key)
    ElseIf e.CommandName = "PDStatus" And e.CommandArgument <= 0 Then
        Response.Redirect("PackagingDetails.aspx?FileId=" + key)
    End If
End Sub
在PageIndexchange事件中,我写了如下内容:


受保护的子gridFileDetails\u PageIndexChanging(ByVal sender作为对象,ByVal e作为System.Web.UI.WebControl.GridViewPageEventArgs)处理gridFileDetails.PageIndexChanging gridFileDetails.PageIndex=e.NewPageIndex 结束子项,而不是此项:

Dim row As GridViewRow = CType(CType(e.CommandSource, Control).NamingContainer, GridViewRow)
使用
EventArgs
中的索引以编程方式获取行,如下所示:

gridFileDetails.PageIndex = e.NewPageIndex
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = gridFileDetails.Rows(index)
与此相反:

Dim row As GridViewRow = CType(CType(e.CommandSource, Control).NamingContainer, GridViewRow)
使用
EventArgs
中的索引以编程方式获取行,如下所示:

gridFileDetails.PageIndex = e.NewPageIndex
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = gridFileDetails.Rows(index)

引用类的MSDN,提取gridviewrow的示例如下:

  ' Convert the row index stored in the CommandArgument
  ' property to an Integer.
  Dim index As Integer = Convert.ToInt32(e.CommandArgument)

  ' Retrieve the row that contains the button clicked 
  ' by the user from the Rows collection.
  Dim row As GridViewRow = ContactsGridView.Rows(index)

查看这是否有助于在没有强制转换错误的情况下获取行。

引用类的MSDN,提取gridviewrow的示例如下:

  ' Convert the row index stored in the CommandArgument
  ' property to an Integer.
  Dim index As Integer = Convert.ToInt32(e.CommandArgument)

  ' Retrieve the row that contains the button clicked 
  ' by the user from the Rows collection.
  Dim row As GridViewRow = ContactsGridView.Rows(index)
查看这是否有助于在不出现强制转换错误的情况下获取行。

这可能有助于:

Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = gridFileDetails.Rows(index)
这可能有助于:

Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = gridFileDetails.Rows(index)


当我尝试ur代码时,出现以下错误:mscorlib.dll中发生了“System.ArgumentOutOfRangeException”类型的异常,但未在用户代码中处理其他信息:索引超出范围。必须为非负且小于集合的大小。这意味着您的网格没有数据-请检查以确保gridview已被数据绑定。可能您没有在回发时加载数据,并且您的gridview已禁用viewstate?请发布您看到的异常的堆栈跟踪。我收到此错误:mscorlib.dll中发生了“System.ArgumentOutOfRangeException”类型的异常,但未在用户代码中处理其他信息:索引超出范围。必须为非负且小于集合的大小。这是异常消息,我希望看到堆栈跟踪,它是消息后的文本块,显示在错误发生之前调用了哪些方法。当我尝试您的代码时,我收到以下错误:mscorlib.dll中发生“System.ArgumentOutOfRangeException”类型的异常,但未在用户代码中处理其他信息:索引超出范围。必须为非负且小于集合的大小。这意味着您的网格没有数据-请检查以确保gridview已被数据绑定。可能您没有在回发时加载数据,并且您的gridview已禁用viewstate?请发布您看到的异常的堆栈跟踪。我收到此错误:mscorlib.dll中发生了“System.ArgumentOutOfRangeException”类型的异常,但未在用户代码中处理其他信息:索引超出范围。必须为非负且小于集合的大小。这是异常消息,我希望看到堆栈跟踪,它是消息后的文本块,显示在错误发生之前调用了哪些方法。当我尝试您的代码时,我收到以下错误:mscorlib.dll中发生“System.ArgumentOutOfRangeException”类型的异常,但未在用户代码中处理其他信息:索引超出范围。必须为非负且小于集合的大小。您是否尝试过使用调试器查看在运行此方法时实例化对象的内容?例如,在e.CommandArgument中传递的索引是什么,gridFileDetails.Rows的当前值是什么?gridFileDetails.Rows.Count返回值“10”,e.CommandArgument的值是什么?如果大于10或小于0,则会导致值超出范围。Dim index As Integer=Convert.ToInt32(e.CommandArgument)index在我尝试代码时返回值“2”,我收到以下错误:mscorlib.dll中发生“System.ArgumentOutOfRangeException”类型的异常,但未在用户代码中处理其他信息:索引超出范围。必须为非负且小于集合的大小。您是否尝试过使用调试器查看在运行此方法时实例化对象的内容?例如,在e.CommandArgument中传递的索引是什么,gridFileDetails.Rows的当前值是什么?gridFileDetails.Rows.Count返回值“10”,e.CommandArgument的值是什么?如果大于10或小于0,则会导致值超出范围。Dim index As Integer=Convert.ToInt32(e.CommandArgument)index返回值“2”。如果发布ASPX代码,可能会有所帮助。受保护的子网格文件详细信息\u PageIndexChanging(ByVal sender作为对象,ByVal e作为System.Web.UI.WebControl.GridViewPageEventArgs)处理gridFileDetails.PageIndexChanging gridFileDetails.PageIndex=e.NewPageIndex End子页面如果您发布您的ASPX代码会有所帮助。受保护的子gridFileDetails\u PageIndexChanging(ByVal sender作为对象,ByVal e作为System.Web.UI.WebControl.GridViewPageEventArgs)处理gridFileDetails.PageIndexChanging gridFileDetails.PageIndex=e.NewPageIndex End Sub