[英]GridView OnSelectedIndexChanged event not firing
我试图获取GridView
的选定行,我知道我应该能够根据OnSelectedIndexChanged
事件获取该信息。 每当我点击该行时,事件都不会触发。
<asp:GridView ID="GridView1" runat="server" GridLines="None"
Width="930px" CellPadding="4" ForeColor="#333333"
onselectedindexchanged="GridView1_SelectedIndexChanged2">
<AlternatingRowStyle BackColor="White" />
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
protected void GridView1_SelectedIndexChanged2(object sender, EventArgs e)
{
//string company = GridView1.SelectedRow.Cells[0].Text;
Response.Redirect("Client_View.aspx", false);
}
任何帮助都将不胜感激。 我可以看到没有代码重置其对另一个事件的引用,我可以看到。
如果您只是单击GridView
的行,则不会触发该事件。 您必须在行中有某种按钮才能单击,这将触发RowCommand
事件以及SelectedIndexChanged
事件(如果您单击的行当然尚未被选中)。 它不完全像Windows Forms DataGridView =)
让事件触发的最简单方法是将此属性添加到GridView
标记中:
AutoGenerateSelectButton="True"
这将创建一个“选择” LinkButton
,当您单击它时将触发代码隐藏中的Gridview1_SelectedIndexChanged2
事件。
编辑:只是为了澄清,这是你需要添加该属性的地方:
<asp:GridView ID="GridView1" runat="server" GridLines="None"
Width="930px" CellPadding="4" ForeColor="#333333"
onselectedindexchanged="GridView1_SelectedIndexChanged2"
AutoGenerateSelectButton="True" >
不能单击一行并让它处理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
问这个问题已经过去几年了,我当然希望有问题的人弄明白,但我遇到了同样的问题,感谢其中一位回应者我弄清楚问题是什么。
检查Gridview中的实际按钮行,并确保ButtonField中的CommandName="Select"
。 出于某种原因,通常自动输入的代码未添加。
如果您在选定的索引更改方法中有回发代码,则应该为false EnableEventValidation
<%@ Page Title="" Language="C#" EnableEventValidation="false" MasterPageFile="~/Administration/Site.master" AutoEventWireup="true" CodeFile="CourseStatusReport.aspx.cs" Inherits="Administration_Reports_CourseStatusReport" %>
您可能需要将自定义事件连接到控件。 首次在代码隐藏中创建控件时尝试这样的事情:
// Add event handler dynamically using C# syntax.
GridView1.onselectedindexchanged += this.GridView1_SelectedIndexChanged2;
按照@jadarmel27
建议启用选择。 尝试事件初始化
protected void Page_Init(object sender, EventArgs e)
{
GridView1.SelectedIndexChanged += this.GridView1_SelectedIndexChanged2;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.