5

Bu soru yaygın görünüyor ve ben zaten bu answer geçti.SqlDataAdapter sayfa SqlDataReader kaynağını kullanma

Maalesef sayfam hala disk belleği vermiyor. İşte benim kod C# şu şekilde görünür: Maalesef

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(); 

, bunu yaparken, benim çağrı görünmüyor. Yanlış bir şey mi yapıyorum?

Teşekkür

+1

Seçiminizle birlikte 15'ten fazla kayıt alıyor musunuz? Ayrıca, Databind() yönteminin çağrılmasından ÖNCE, tüm Paging ile ilgili özellikleri ayarlayın. –

+0

Vay, bu kolaydı. Ben sadece veritabanın() önüne koymam gerekiyordu. Teşekkürler! – Kevin

+0

Oh OnPageIndexChanging ve OnPageIndexChanged arasındaki fark nedir? – Kevin

cevap

6

Seti Databind() yöntemi denir önce Çağrı ilgili özelliklerin tümünü. Özel Sayfalama'u kullandığınızda, GridView1_PageIndexChanging olayını işlemeniz gerekir.

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(); 
} 

ayrıca Page_Load üzerinde GridView bağlayıcı ise, böyle yapmak:

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

İlk veritabanım() pageLoad üzerindeydi. Ancak, GridView1_PageIndexChanging şeylerime if (! IsPostBack) eklediğimde, gridview'in sonraki sayfasına gitmek için tıkladığımda, hiçbir şey ilk kez gerçekleşmez. Tekrar tıkladığımda, sonraki sayfaya gider. If ifadesi olmadan, ilk tıklama – Kevin

+0

bunu yapar! IsPostBack'e SayfaIndexChanging'e ekleme, sadece Page_Load cevabında söylediğim gibi :) Şaşkınlığı önlemek için olayı ile güncelleyeceğim: P –

+0

Ah tamam harika teşekkürler! Merak etme, bu ne yapar? Çünkü pageload'da! IsPostBack olmadan çalışıyor gibi görünüyor. – Kevin

3

ekleyebilir gerek Geçerli PageIndex değiştirebilir ve bu gibi GridView yeniden bağlamak gerekir paging'u etkinleştirmek için GridView numaralı PageIndexChanging olay.

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