5

To pytanie wydaje się być powszechne i poszedłem za pośrednictwem tego answer już.Korzystanie SqlDataAdapter do strony źródłem SqlDataReader

Niestety, moja strona nadal nie jest wywoływana. Oto, jak wygląda mój kod w języku C#:

SqlCommand command = new SqlCommand("(SELECT ......", Connection); 
SqlDataAdapter myAdapter = new SqlDataAdapter(command); 
DataTable dt = new DataTable(); 
myAdapter.Fill(dt); 

command.Connection = connection; 
command.Connection.Open(); 

GridView1.DataSource = dt; 
GridView1.DataBind(); 
GridView1.AllowPaging = true; 
GridView1.PageSize = 15; 

command.Connection.Close(); 
command.Connection.Dispose(); 

Niestety, gdy to zrobię, moje stronicowanie się nie pojawi. czy robię coś źle?

Dzięki

+1

Czy na pewno wybierasz ponad 15 rekordów? Ustaw również wszystkie właściwości związane z przywoływaniem PRZED wywołaniem metody Databind(). –

+0

Wow, to było łatwe. Po prostu musiałem ustawić go przed databind(). Dzięki! – Kevin

+0

Jaka jest różnica między OnPageIndexChanging a OnPageIndexChanged? – Kevin

Odpowiedz

6

ustawić wszystkie właściwości związane Pager-przed metoda Databind() jest tzw. Podczas korzystania z Custom Paging będziesz musiał obsłużyć zdarzenie GridView1_PageIndexChanging. Trzeba zmienić obecną PageIndex i ponownie związać swoją GridView takiego:

void bindGridview() 
{ 
    SqlCommand command = new SqlCommand("(SELECT ......", Connection); 
    SqlDataAdapter myAdapter = new SqlDataAdapter(command); 
    DataTable dt = new DataTable(); 
    myAdapter.Fill(dt); 

    command.Connection = connection; 
    command.Connection.Open(); 
    GridView1.AllowPaging = true; 
    GridView1.PageSize = 15; 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 


    command.Connection.Close(); 
    command.Connection.Dispose(); 
} 

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 
    bindGridview(); 
} 

Jeśli są również wiązania GridView na Page_Load, zrób to tak:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
     bindGridview(); 
} 
+0

Moja pierwsza baza danych() była na stronieLoad. Jednak po dodaniu elementu if (! IsPostBack) do elementu GridView1_PageIndexChanging, gdy klikam, aby przejść do następnej strony widoku siatki, nic się nie dzieje za pierwszym razem. Kiedy klikam ponownie, przechodzi do następnej strony. Bez if, robi to na pierwszym kliknięciem – Kevin

+0

Nie dodawaj IsPostBack do PageIndexChanging, tylko w Page_Load jak mówię odpowiedź :) będę aktualizował go ze zdarzeniem, aby uniknąć nieporozumień: P –

+0

Ah ok, wielkie dzięki! Z ciekawości, co to robi? Ponieważ wydaje się, że działa on bez! IsPostBack w pageload? – Kevin

3

trzeba dodać zdarzenie PageIndexChanging z GridView, aby umożliwić paging.

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 
    bindGridview(); 
}