C# gridview行选择每次加载页面
您好,我正在使用gridview控件显示数据。单击gridview特定行时,我希望获得该行id 为此,我使用了以下代码: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
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
端接头
对于您的重新编码问题,我想这与您的渲染子调用有关
我认为你想完成的简单任务是不必要的