2009-09-23 2 views
3

У меня есть веб-приложение asp.net C#. В ней у меня есть gridview. Gridview получает результаты поиска из базы данных. Иногда есть много результатов, поэтому я хотел использовать пейджинг. Вот что я пробовал:gridview_paging messing up

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

По какой-то причине, когда я нажимаю на номер страницы, она показывает мне EmptyDataText (Там нет записей для отображения). Какой код будет работать? Пожалуйста, помогите.

Спасибо

ответ

0

Вы должны передать свою источник данных для grdResults перед вызовом DataBind().

+0

Только в том случае, если он еще не объявлен в разметке или, скажем, в событии Load. У вас отключена функция ViewState? Если нет, я не думаю, что вам нужно повторно привязать данные, если только ваш источник данных содержит только отображаемые записи (и опускает их на других страницах). –

+0

Вы правы. Мне не нужно перепроверять данные. Но теперь, это не изменяет страницу, пока я не нажимаю номер страницы дважды ... – zohair

1

Попробуйте назначить источник данных в событии NeedDataSource.

Cheers.

0

Попробуйте этот код Это будет absoloutly работы:

protected void GV_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 

    GV.PageIndex = e.NewPageIndex; 
    BindGrid(); 
} 

    public override void BindGrid() 
{ 
    query = new CommonQueries(); 
    GV.DataSource = query.getAllBooks(); 
    GV.DataBind(); 
} 

проблема с вашим кодом является то, что вы did'nt переназначить источник данных в GridView!