Событие PageIndexChanging, вызванное GridView 'GridView1', которое не было обработано - PullRequest
11 голосов
/ 30 октября 2011

Я создал:

  • одна главная страница и одна страница содержимого под названием Подробно.
  • Событие нажатия кнопки, отображающее данные в виде сетки.
  • Ввид сетки, столбцы генерируются автоматически.
  • Я хотел показать 11 столбцов в виде сетки, но это больше, чем размер страницы.

Что для этого сделать?

Я создал вспомогательный файл sql для кода соединения с базой данных и вызывал этот метод, не используя sqldatasource для соединения.

Когда я пытаюсь выполнить подкачку страниц, получаю error :

Событие PageIndexChanging, вызванное GridView 'GridView1', которое не было обработано.

Ответы [ 5 ]

22 голосов
/ 30 октября 2011

Вам необходимо объявить в своем коде метод, который обрабатывает событие PageIndexChanging.

Что-то похожее на это:

protected void GridView1_PageIndexChanging (object sender, GridViewPageEventArgs  e)
{
    GridView1.PageIndex = e.NewPageIndex;
    bindGridView(); //bindgridview will get the data source and bind it again
}

private void bindGridView()
{
     GridView1.DataSource=getData();
     GridView1.DataBind();
}

Предоставление примера кода:

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        bindGridView(); //bindgridview will get the data source and bind it again
    }

    protected void Page_Load(object sender , EventArgs e)
    {
        if(!IsPostBack)
         bindGridView();

    }
    //this is some sample data 
    private void bindGridView()
    {
        DataTable t = new DataTable();
        t.Columns.Add("Col1");
        t.Columns.Add("Col2");
        DataRow r = null;
        for (int i = 0; i < 25; i++)
        {
            r = t.NewRow();
            r.ItemArray = new object[] { "Val" + i, " Another " + i };
            t.Rows.Add(r);
        }
        GridView1.DataSource = t;
        GridView1.DataBind();
    }

И это разметка:

<asp:GridView OnPageIndexChanging="GridView1_PageIndexChanging" AllowPaging="true" PageSize="10" ID="GridView1" runat="server" AutoGenerateColumns="true">

Производит это:

enter image description here

2 голосов
/ 27 июня 2013

Для пейджинга вы можете использовать OnPageIndexChanging для этого ....

Например

вы должны использовать OnPageIndexChanging = "gvdetails_PageIndexChanging" в вашем GridView ...

Вы должны записать приведенный ниже код в событие в коде, например

protected void gvdetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    gvdetails.PageIndex = e.NewPageIndex;
    BindData();
}

Более подробно вы можете проверить по ссылке ниже, здесь я использую страницу Изменение индекса в моей статье ...

Здесь я использую PageIndexChange

Надеюсь, это поможет вам .... Поделитесь этим с другими ... Спасибо!

1 голос
/ 31 июля 2012

Это окончательный ответ:

Imports System.Collections.Generic ' library

Protected Sub grdEmployees_PageIndexChanging1(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewPageEventArgs) Handles grdEmployees.PageIndexChanging
    grdEmployees.PageIndex = e.NewPageIndex
    LoadEmployeeList() 'FUNCTION FOR DATASET
    grdEmployees.DataBind()

End Sub
0 голосов
/ 27 октября 2017

Вы просто добавляете это к своему коду:

protected void GridViewTrsEmail_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridViewTrsEmail.PageIndex = e.NewPageIndex;
    GridViewTrsEmail.DataBind();


}
0 голосов
/ 23 февраля 2012

Чтобы это исправить, мне пришлось поближе познакомиться с моим источником данных и ключами данных.У меня есть набор записей, которые возвращаются с SQL Server, и я привязывал их к POCO.Этот класс имеет несколько открытых свойств типа Integer.Эти целые числа были моими ключами данных в сетке.Вместо этого я заменил их тип на строку, чтобы обойти проблему приведения.

...