GridView OnSelectedIndexChanged事件未触发

我试图获取GridView的选定行,我知道我应该能够根据OnSelectedIndexChanged事件获取该信息。 每当我点击该行时,该事件都不会触发。

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

任何帮助都将不胜感激。 我可以看到没有代码重置其对另一个事件的引用,我可以看到。

问这个问题已经过去几年了,我当然希望有问题的人弄清楚但是我遇到了同样的问题,感谢其中一位回应者我弄清楚了问题是什么。 检查Gridview中的实际按钮行,并确保Buttonfield中的CommandName =“Select”。 出于某种原因,通常自动输入的代码未添加。

如果您只是单击GridView的行,则不会触发该事件。 您必须在行中有某种按钮才能单击,这将触发RowCommand事件以及SelectedIndexChanged事件(如果您单击的行当然尚未被选中)。 它不完全像Windows Forms DataGridView =)

让事件触发的最简单方法是将此属性添加到GridView标记中:

 AutoGenerateSelectButton="True" 

这将创建一个“选择” LinkButton ,当您单击它时将触发代码隐藏中的Gridview1_SelectedIndexChanged2事件。

编辑:只是为了澄清,这是你需要添加该属性的地方:

  

不能单击一行并让它处理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; }