Событие GridView OnSelectedIndexChanged не запускается - PullRequest
10 голосов
/ 07 февраля 2012

Я пытаюсь получить выбранную строку 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);

}

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

Ответы [ 6 ]

10 голосов
/ 07 февраля 2012

Если вы просто нажмете на строку в 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" >
5 голосов
/ 25 июля 2013

Неверно, что вы не можете щелкнуть строку и обработать событие 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 голосов
/ 06 августа 2015

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

Проверьте фактическую линию кнопок в Gridview и убедитесь, что у вас есть CommandName="Select" в ButtonField.По какой-то причине этот код , который обычно вводится автоматически, не был добавлен.

1 голос
/ 15 апреля 2017

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

  <%@ Page Title="" Language="C#" EnableEventValidation="false" MasterPageFile="~/Administration/Site.master" AutoEventWireup="true" CodeFile="CourseStatusReport.aspx.cs" Inherits="Administration_Reports_CourseStatusReport" %>
1 голос
/ 07 февраля 2012

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

// Add event handler dynamically using C# syntax.
  GridView1.onselectedindexchanged += this.GridView1_SelectedIndexChanged2;
0 голосов
/ 07 февраля 2012

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

protected void Page_Init(object sender, EventArgs e)
{
   GridView1.SelectedIndexChanged += this.GridView1_SelectedIndexChanged2;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...