GridView ‘GridView1’ запустил событие PageIndexChanging, которое не было обработано

#asp.net #page-index-changed

#asp.net #страница-индекс-изменен

Вопрос:

Я создал:

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

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

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

Когда я пытаюсь выполнить подкачку, появляется ошибка:

GridView ‘GridView1’ запустил событие PageIndexChanging, которое не было обработано.

Ответ №1:

Вам нужно объявить метод в вашем коде, который обрабатывает событие 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">
  

Приводит к этому:

введите описание изображения здесь

Комментарии:

1. я сделал это, но никакого эффекта. защищенная пустота GridView1_PageIndexChanging(отправитель объекта, GridViewPageEventArgs e) { // строка s1 = «выбрать * из master»; //DataSet ds = SqlHelper. GetDataSet(CommandType.Text, s1, «master»); // Таблица данных = ds.Tables[«master»]; //если (таблица.Строки. Count> 0) //{ // GridView1.DataSource = ds; // GridView1.DataBind(); //} GridView1. pageIndex = e.NewPageIndex; //Привязать сетку GridView1.DataBind(); } и aspx-файл

2. @JuiTest опубликуйте этот код в своем ответе, а не в качестве комментария. Более полезно увидеть это там.

3. Я не могу ответить на собственный вопрос.

4. @JuiTest извините, я имел в виду добавить этот код к вашему собственному вопросу .

Ответ №2:

Для подкачки страниц вы можете использовать для этого OnPageIndexChanging….

Например

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

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

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

Для получения более подробной информации вы можете проверить ссылку ниже здесь я использую изменение индекса страницы в своей статье…

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

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

Ответ №3:

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

 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
  

Ответ №4:

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

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


}
  

Ответ №5:

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

Комментарии:

1. Вероятно, это был бы лучший комментарий. Это мало что добавляет к принятому ответу.