asp.net – 使用UpdatePanel的CollectionPager问题

我对collectionpager和repeater有问题.当我加载页面时,collectionpager工作正常..但是当我单击搜索按钮并绑定新数据时,单击第2页链接,它将触发page_load事件处理程序并将所有数据重新带回…注意:全部控件位于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_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);}

解决方法

代码非常糟糕,您应该完全检查所有内容.
问题是每次执行页面加载时它再次初始化您查询认值(没有过滤器的那个)您应该找到一种方法来存储在您订购/过滤数据时最后一个查询已执行的某个地方.
无论如何,网上有很多例子显示你想要实现的目标

以下只是其中之一

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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....