C# gridview行选择每次加载页面

C# gridview行选择每次加载页面,c#,javascript,asp.net,vb.net,gridview,C#,Javascript,Asp.net,Vb.net,Gridview,您好,我正在使用gridview控件显示数据。单击gridview特定行时,我希望获得该行id 为此,我使用了以下代码: Protected Sub grdReport_SelectedIndexChanged(sender As Object, e As EventArgs) Handles grdReport.SelectedIndexChanged Dim row As GridViewRow = Me.grdReport.SelectedRow

您好,我正在使用gridview控件显示数据。单击gridview特定行时,我希望获得该行id

为此,我使用了以下代码:

 Protected Sub grdReport_SelectedIndexChanged(sender As Object, e As EventArgs) Handles grdReport.SelectedIndexChanged
             Dim row As GridViewRow = Me.grdReport.SelectedRow

        Dim InvoiceId As Integer = Convert.ToInt32(grdReport.DataKeys(row.RowIndex).Value)
        Session("InvoiceId") = InvoiceId


 End Sub

Protected Sub grdReport_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles grdReport.RowCreated
        If e.Row.RowType = DataControlRowType.DataRow Then

            e.Row.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(Me.grdReport, "Select$" + e.Row.RowIndex.ToString()))

        End If
    End Sub


Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
    Dim gvr As GridViewRow
    For Each gvr In grdReport.Rows
        gvr.Attributes("onclick") = ClientScript.GetPostBackClientHyperlink(
                grdReport,
                String.Concat("Select$", gvr.RowIndex),
                True)
    Next

    MyBase.Render(writer)
End Sub
上面的代码对我来说工作得很好,但每当我点击gridview行,它就会再次加载页面,页面速度变慢


请让我知道我能做些什么,这样整个页面就不会在行单击时一次又一次地加载。

首先,如果您想对鼠标单击事件做出反应,则selectedindexchanged不是一个好事件

填充数据时,始终对网格中的每一行执行selectedindexchanged

因此,如果你有100行代码在你看到网格之前执行100次

我建议使用cellmousedown或cellmouseclick

Private Sub DataGridView_CellMouseDown(sender As System.Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView.CellMouseDown

    If e.Button = Windows.Forms.MouseButtons.Left And e.RowIndex <> -1 And e.ColumnIndex <> -1 Then

Dim InvoiceId As Integer =  DataGridView.Rows(e.RowIndex).Cells("InvoiceId").value

End Sub
Private子DataGridView\u CellMouseDown(发送方作为System.Object,e作为System.Windows.Forms.DataGridViewCellMouseEventArgs)处理DataGridView.CellMouseDown
如果e.Button=Windows.Forms.MouseButtons.Left和e.RowIndex-1以及e.ColumnIndex-1,则
Dim InvoiceId As Integer=DataGridView.Rows(e.RowIndex).Cells(“InvoiceId”).value
端接头
对于您的重新编码问题,我想这与您的渲染子调用有关

我认为你想完成的简单任务是不必要的