2011-08-24 1 views
-2

콜렉션 페이지 및 리피터에 문제가 있습니다. 페이지를로드 할 때 collectionpager가 잘 작동합니다. 그러나 검색 버튼을 클릭하고 새 데이터를 바인딩하고 페이지 2 링크를 클릭하면 page_load 이벤트 처리기가 실행되고 모든 데이터가 다시 반환됩니다. 알림 : 모두 컨트롤은 UpdatePanel에 있습니다.CollectionPager 관련 문제 UpdatePanel

protected void Page_Load(object sender, EventArgs e){ 
if (!IsPostBack) 
{ 
    kayit_getir("SELECT Tbl_Icerikler.ID,Tbl_Icerikler.url,Tbl_Icerikler.durum,Tbl_Icerikler.baslik,Tbl_Icerikler.gunc_tarihi,Tbl_Icerikler.kayit_tarihi,Tbl_Icerikler.sira,Tbl_Kategoriler.kategori_adi FROM Tbl_Icerikler,Tbl_Kategoriler where Tbl_Kategoriler.ID=Tbl_Icerikler.kategori_id ORDER BY Tbl_Icerikler.ID DESC,Tbl_Icerikler.sira ASC"); 
}} 

public void kayit_getir(string SQL){ 
SqlConnection baglanti = new SqlConnection(f.baglan()); 
baglanti.Open(); 
SqlCommand komut = new SqlCommand(SQL, baglanti); 
SqlDataAdapter da = new SqlDataAdapter(komut); 
DataTable dt = new DataTable(); 
da.Fill(dt); 
if (dt.Rows.Count > 0) 
{ 
    CollectionPager1.DataSource = dt.DefaultView; 
    CollectionPager1.BindToControl = Liste; 
    Liste.DataSource = CollectionPager1.DataSourcePaged; 
} 
else 
{ 
    kayit_yok.Text = "<br /><span class='message information'>Kayıt bulunamadı.</span>"; 
} 
da.Dispose(); 
baglanti.Close(); 
CollectionPager1.DataBind(); 
Liste.DataBind();} 


protected void search_Click(object sender, EventArgs e){ 
string adi = f.temizle(baslik.Text); 
string durum = Durum.SelectedValue; 
string kayit_bas_t = kayit_bas_tarih.Text; 
string kayit_bit_t = kayit_bit_tarih.Text; 
string kategori = kategori_adi.SelectedValue; 


string SQL = "SELECT Tbl_Icerikler.ID,Tbl_Icerikler.url,Tbl_Icerikler.durum,Tbl_Icerikler.baslik,Tbl_Icerikler.gunc_tarihi,Tbl_Icerikler.kayit_tarihi,Tbl_Icerikler.sira,Tbl_Kategoriler.kategori_adi FROM Tbl_Icerikler,Tbl_Kategoriler where Tbl_Kategoriler.ID=Tbl_Icerikler.kategori_id and"; 
if (adi != "") 
{ 
    SQL = SQL + " Tbl_Icerikler.baslik LIKE '%" + adi + "%' and"; 
} 

if (kategori != "") 
{ 
    SQL = SQL + " Tbl_Icerikler.kategori_id=" + kategori + " and"; 
} 

if (durum != "") 
{ 
    SQL = SQL + " Tbl_Icerikler.durum='" + durum + "' and"; 
} 

if (kayit_bas_t != "") 
{ 
    SQL = SQL + " (Tbl_Icerikler.kayit_tarihi>'" + kayit_bas_t + "') and"; 
} 

if (kayit_bit_t != "") 
{ 
    SQL = SQL + " (Tbl_Icerikler.kayit_tarihi<'" + kayit_bit_t + "') and"; 
} 

SQL = SQL.Remove(SQL.Length - 3, 3); 
SQL = SQL + " ORDER BY sira ASC,ID DESC"; 

try 
{ 
    kayit_getir(SQL); 
} 
catch { } 
Recursive(0, 0);} 
+0

Massimiliano Peluso의 솔루션을 연구 했습니까? –

+0

아니, 그건 ... – mekar10

답변

1

코드는 매우 나쁘며 모든 것을 완전히 검토해야합니다. 문제는 페이지로드가 실행될 때마다 다시 기본값 (필터가없는 쿼리)으로 쿼리를 초기화합니다. 데이터를 주문/필터링 할 때 마지막 쿼리가 저장된 어딘가에 저장하는 방법을 찾아야합니다. 는 어쨌든이 웹 예를 들어 많은 당신이

를 달성하기 위해 노력하고있는 것을 보여주고있다 아래 그 중 하나

http://www.codeproject.com/KB/webforms/ExtendedRepeater.aspx

0

의 검색 조건에 다시 CollectionPager을 바인드 할 필요가있다.

0

시도해보십시오. EnableViewState="false"