Страница DataList с результатами поискаC#

Место общения программистов C#
Anonymous
Страница DataList с результатами поиска

Сообщение Anonymous »

У меня есть DataList для отображения множества элементов, поэтому я использую метод разбиения по страницам и поиска, чтобы фильтровать и упростить задачу, оба работают нормально. однако, когда дело доходит до пейджинга после поиска, данные возвращаются к (SELECT *), но не к конкретному элементу, который я ищу

что я сделал до сих пор:

Код: Выделить всё

    SqlDataAdapter adap;
DataSet ds;
PagedDataSource adsource;
int pos;

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.ViewState["vs"] = 0;
pos = (int)this.ViewState["vs"];

databind();
databind2();
}
}

public void databind()
{
adap = new SqlDataAdapter("select p.item_code as pitem, i.LongDesc as longname, p.SellPrice_1 as normalprice, p.SellPrice_2 as memberprice from plu p inner join item i on p.item_code = i.item_code WHERE p.publish =1 order by i.LongDesc", constr);
ds = new DataSet();
adsource = new PagedDataSource();
adap.Fill(ds);
adsource.DataSource = ds.Tables[0].DefaultView;
adsource.PageSize = 16;
adsource.AllowPaging = true;
adsource.CurrentPageIndex = pos;
CategoryList.DataSource = adsource;
CategoryList.DataBind();
}
часть фильтра показана ниже

Код: Выделить всё

public void Filter_Command(Object source, DataListCommandEventArgs e)
{
if (e.CommandName.Equals("Filter"))
{
adap = new SqlDataAdapter("select p.item_code as pitem, i.LongDesc as longname, p.SellPrice_1 as normalprice, p.SellPrice_2 as memberprice, d.department_code as dcode, d.category_code as dcatecode, c.category_code as ccode from plu p inner join item i on p.item_code = i.item_code inner join EPO_PDU_department d on d.department_code = i.department_code inner join EPO_PDU_Category c on c.category_code = d.category_code WHERE p.publish =1 AND c.category_code = '" + e.CommandArgument.ToString() + "'order by i.LongDesc  ", constr);
ds = new DataSet();
adsource = new PagedDataSource();
adap.Fill(ds);
adsource.DataSource = ds.Tables[0].DefaultView;
adsource.PageSize = 16;
adsource.AllowPaging = true;
adsource.CurrentPageIndex = pos;
btnprevious.Enabled = !adsource.IsFirstPage;
btnnext.Enabled = !adsource.IsLastPage;
CategoryList.DataSource = adsource;
CategoryList.DataBind();
}
}
кнопки, которые я использовал:

Код: Выделить всё

protected void btnprevious_Click(object sender, EventArgs e)
{
pos = (int)this.ViewState["vs"];
pos -= 1;
this.ViewState["vs"] = pos;
databind();
}

protected void btnnext_Click(object sender, EventArgs e)
{
pos = (int)this.ViewState["vs"];
pos += 1;
this.ViewState["vs"] = pos;
databind();
}
поиск и пейджинг работают нормально друг без друга. но я бы хотел, чтобы они работали вместе. спасибо

******* ОБНОВЛЕНИЕ *******

на случай, если Рику понадобится дополнительная информация
Изображение


Подробнее здесь: https://stackoverflow.com/questions/345 ... rch-result

Вернуться в «C#»