просмотр сетки с использованием набора данных - PullRequest
1 голос
/ 05 октября 2009

У меня есть веб-приложение ASP.NET (C #), где я получаю некоторую информацию из источника данных и отображаю ее в виде таблицы. Я хотел включить пейджинг, но по какой-то причине пейджинг не работает. Я провел небольшое исследование в Интернете и обнаружил, что подкачка выполняется по-другому, если используется набор данных. Когда я нажимаю на номер страницы, он обновляется и говорит, что нет записей для отображения. Я вызываю эту функцию в функции нажатия кнопки:

        bindGrid(cmd);

Вот мой метод привязки:

    private void bindGrid(OracleCommand comm)
    {
        OracleDataAdapter adapter = new OracleDataAdapter(comm);
        DataSet ds = new DataSet();

        ds.Tables.Add("Results");
        adapter.Fill(ds.Tables["Results"]);

        grd.DataSource = ds;
        grd.DataBind();
    }

Метод пейджинга:

    protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grd.PageIndex = e.NewPageIndex;
        grd.DataBind();
    }

Как я должен делать пейджинг с набором данных? Может кто-нибудь помочь, пожалуйста?

Ответы [ 3 ]

3 голосов
/ 05 октября 2009

Вам также нужно получить данные:)

Итак, вместо этого:

protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grd.PageIndex = e.NewPageIndex;
    grd.DataBind();
}

вы должны использовать:

protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grd.PageIndex = e.NewPageIndex;

    //Create command
    bindGrid(comm);

}
2 голосов
/ 05 октября 2009

Вместо grd.DataBind() в вашем вызове метода вызова bindGrid(). Или лучше использовать некоторые встроенные «бизнес-объекты» для привязки данных, например ObjectDataSource

0 голосов
/ 05 октября 2009

Самый простой способ сделать пейджинг - установить AllowPaging = "yes" в вашем GridView, и ничего не делать в коде позади. GridView будет пролистывать свой набор данных самостоятельно. НЕ перепривязывать.

Это хорошо для небольших наборов данных, но не так хорошо для телефонной книги. Как сказал Тадас, ObjectDataSource - это способ обработки пейджинга самостоятельно на стороне сервера. С ObjectDataSource вы вообще не будете связываться с данными; органы управления справляются с этим. Однако вам необходимо предоставить метод Select (обычно статический) для объекта, и он должен иметь параметры для первой строки и размера страницы (установите их как атрибуты в ObjectDataSource). Вам также необходимо реализовать метод Count для возврата полного размера набора данных; иначе пейджинг не будет работать. Используя ObjectDataSource таким образом, вы перемещаете пейджинг на свой слой данных, и страница загружается намного быстрее.

...