Событие GridView OnSelectedIndexChanged не срабатывает
Я пытаюсь получить выбранную строку 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);
}
Любая помощь с этим будет оценена по достоинству. Нет кода, который я могу увидеть, который сбрасывает ссылку на другое событие, которое я вижу.
Ответы
Ответ 1
Прошло несколько лет с тех пор, как этот вопрос был задан, и я, конечно, надеюсь, что человек с проблемой понял его, но у меня была та же проблема, и благодаря одному из ответчиков я выяснил, в чем проблема.
Проверьте фактическую строку кнопок в Gridview и убедитесь, что у вас есть CommandName="Select"
в ButtonField. Почему-то тот код, который обычно вводится автоматически, не был добавлен.
Ответ 2
Если вы просто нажимаете на строку в 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" >
Ответ 3
Не верно, что вы не можете щелкнуть строку и обработать событие 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
Ответ 4
Возможно, вам нужно подключить настраиваемое событие к элементу управления. Попробуйте что-то подобное при первом создании элемента управления в коде:
// Add event handler dynamically using C# syntax.
GridView1.onselectedindexchanged += this.GridView1_SelectedIndexChanged2;
Ответ 5
Если у вас есть код обратной передачи в выбранном методе изменения индекса, вы должны false EnableEventValidation
<%@ Page Title="" Language="C#" EnableEventValidation="false" MasterPageFile="~/Administration/Site.master" AutoEventWireup="true" CodeFile="CourseStatusReport.aspx.cs" Inherits="Administration_Reports_CourseStatusReport" %>
Ответ 6
Включить выбор, предложенный @jadarmel27
. Попробуйте инициализацию событий
protected void Page_Init(object sender, EventArgs e)
{
GridView1.SelectedIndexChanged += this.GridView1_SelectedIndexChanged2;
}