Событие GridView OnSelectedIndexChanged не срабатывает

Я пытаюсь получить выбранную строку GridView , и я знаю, что я должен получить эту информацию на OnSelectedIndexChanged события OnSelectedIndexChanged . Всякий раз, когда я нажимаю на строку, событие не срабатывает.

              protected void GridView1_SelectedIndexChanged2(object sender, EventArgs e) { //string company = GridView1.SelectedRow.Cells[0].Text; Response.Redirect("Client_View.aspx", false); } 

Любая помощь с этим будет оценена по достоинству. Нет кода, который я могу увидеть, который сбрасывает ссылку на другое событие, которое я вижу.

Прошло несколько лет с тех пор, как был задан этот вопрос, и я, конечно, надеюсь, что человек с проблемой выяснил это, но у меня была такая же проблема, и благодаря одному из респондентов я выяснил, в чем проблема. Проверьте фактическую строку кнопки в Gridview и убедитесь, что у вас есть CommandName = «Выбрать» в Buttonfield. По какой-то причине этот код, который обычно вводится автоматически, не был добавлен.

Если вы просто щелкаете по строке в GridView , это не вызовет событие. Вы должны иметь какую-то кнопку в строке, на которую нужно щелкнуть, которая будет RowCommand событие RowCommand , а также событие SelectedIndexChanged (если, конечно, выбранная вами строка еще не выбрана). Это не совсем так, как Windows Forms DataGridView =)

Самый простой способ запустить событие – добавить этот атрибут в разметку GridView :

 AutoGenerateSelectButton="True" 

Это создает «Select» LinkButton , который будет Gridview1_SelectedIndexChanged2 событие Gridview1_SelectedIndexChanged2 в вашем коде, когда вы нажмете на него.

EDIT: просто чтобы уточнить, вот где вам нужно добавить этот атрибут:

  

Это НЕ верно, что вы не можете щелкнуть строку и обработать событие SelectedIndexChanged . Вам просто нужно добавить небольшой код в событие RowCreated .

 Protected Sub yourDataGrid_RowCreated(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles yourDataGrid.RowCreated If e.Row.RowType = DataControlRowType.DataRow Then e.Row.Attributes("onclick") = Me.Page.ClientScript.GetPostBackEventReference(Me.yourDataGrid, "Select$" & e.Row.RowIndex) End If End Sub 

Возможно, вам нужно подключить настраиваемое событие к элементу управления. Попробуйте что-то подобное при первом создании элемента управления в коде:

 // Add event handler dynamically using C# syntax. GridView1.onselectedindexchanged += this.GridView1_SelectedIndexChanged2; 

Если у вас есть код обратной передачи в выбранном методе изменения индекса, вы должны false EnableEventValidation

  <%@ Page Title="" Language="C#" EnableEventValidation="false" MasterPageFile="~/Administration/Site.master" AutoEventWireup="true" CodeFile="CourseStatusReport.aspx.cs" Inherits="Administration_Reports_CourseStatusReport" %> 

Включить выбор, как предлагается @jadarmel27 . Попробовать инициализацию события

 protected void Page_Init(object sender, EventArgs e) { GridView1.SelectedIndexChanged += this.GridView1_SelectedIndexChanged2; }