AspNetPager搜索后分页的难题

skyjoy2006 2009-12-04 11:10:32
如题,我用post传值方式搜索后里用AspNetPager来分页(两种模式:一种是AspNetPager不显示?page参数,另一种是Url分页即带参数?page=),我贴出我的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindListData();

BindHot();
}
}
/// <summary>
/// 数据绑定--初始化
/// </summary>
private void BindListData()
{
DataSet ds1 = NewsBll.GetList("*", " Title Like '%" + Request.Form["txtKeyWord"].Trim()+ "%'", " ID DESC");//这里返回个DataSet ,问题:显示我第二页显示的时候Request.Form["txtKeyWord"]为空了,取的的数据条件就是like '%%'所有数据的第二页了,这是不显示?page参数的分页方式。带参数page的呢,又如何处理?请指教
AspNetPager1.RecordCount = ds1.Tables[0].Rows.Count;
Session["dvlist"] = ds1.Tables[0].DefaultView;
bindData();
}
/// <summary>
/// 数据绑定
/// </summary>
private void bindData()
{
if (ZsRequest.GetInt("page", 0) == 0)//ZsRequest类无须关注,我用来接收参数的一个封装类相当于 Request.QueryString("page")
{
CurrentPage = 1;
}
else
{
CurrentPage = Convert.ToInt32(ZsRequest.GetString("page"));
}
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging = true;
pds.PageSize = AspNetPager1.PageSize;
pds.CurrentPageIndex = CurrentPage - 1;
pds.DataSource = (DataView)Session["dvlist"];
RPNewsList.DataSource = pds;
RPNewsList.DataBind();
}

protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
bindData();
}


我下面还有第二种写法,虽然不带page的分页功能实现了,但还是有个问题:当点击第二页时关键字的搜索我要在页面上显示,却显示不了,很显然是点击第二页时Request.Form["txtKeyWord"]为空了

const string vsKey = "searchCriteria"; //ViewState key
protected string strKeyWord = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
strKeyWord = Request.Form["txtKeyWord"].Trim();
string strQuery = " Title Like '%" + strKeyWord + "%'";
ViewState[vsKey] = strQuery;
searchOrders(strQuery);


void searchOrders(string sWhere)
{

DataSet ds1 = NewsBll.GetList("*", sWhere, " ID DESC");
AspNetPager1.RecordCount = ds1.Tables[0].Rows.Count;

PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds1.Tables[0].DefaultView;
pds.AllowPaging = true;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
pds.PageSize = AspNetPager1.PageSize;
RPNewsList.DataSource = pds;
RPNewsList.DataBind();
}

protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
searchOrders((string)ViewState[vsKey]);
}

最后的问题,求搜索后的url分页即带参数?page=的方式的解决办法
...全文
175 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyq29 2010-06-11
  • 打赏
  • 举报
回复
用viewstate保存条件嘛。。。。。。。。。
长腿爸爸 2010-06-11
  • 打赏
  • 举报
回复
HyperLinkPager分页控件




ASP.NET GridView分页控件
长腿爸爸 2010-06-11
  • 打赏
  • 举报
回复
try...

使用HyperLinkPager分页控件

[/img]

[img=http://www.taian-seo.com/it/pager.html]ASP.NET GridView分页控件[/img]
maxiansheng 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xianfajushi 的回复:]
C# code

pages = Request["page"];
Response.Redirect("List.aspx?id=" + ID + "&page=" + pages + "");
[/Quote]
这个怎么用
nosuchtracter 2009-12-04
  • 打赏
  • 举报
回复
Request.Form["txtKeyWord"]
这种方式是取post过来的数据
你的是Url参数吧?
应该是Request.QueryString("参数名")
wuyq11 2009-12-04
  • 打赏
  • 举报
回复
txtKeyWord.Text
通过属性保存
public string keyword
{
get
{
return ViewState["key"].ToString();
}
set
{
ViewState["key"]=value;
}
}
AspNetPager1_PageChanged绑定数据
  • 打赏
  • 举报
回复
使用这个控件搜索分页显示没有遇到这样问题

protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{ ShowData(); }
private void ShowData()//显示、分页//搜索
{
。。。。。。。。。。。。。
DataGrid1.DataBind();
}

你需要的应该是这样
  • 打赏
  • 举报
回复

pages = Request["page"];
Response.Redirect("List.aspx?id=" + ID + "&page=" + pages + "");
guoziwumingzi 2009-12-04
  • 打赏
  • 举报
回复
const string vsKey = "searchCriteria"; //ViewState key
protected string strKeyWord = "",strQuery;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.Form["txtKeyWord"].Trim() != null)
{
strKeyWord = Request.Form["txtKeyWord"].Trim();
strQuery = " Title Like '%" + strKeyWord + "%'";
ViewState[vsKey] = strQuery;
searchOrders(strQuery);
}
else
{
}

}
}
void searchOrders(string sWhere)
{

DataSet ds1 = NewsBll.GetList("*", sWhere, " ID DESC");
AspNetPager1.RecordCount = ds1.Tables[0].Rows.Count;

PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds1.Tables[0].DefaultView;
pds.AllowPaging = true;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
pds.PageSize = AspNetPager1.PageSize;
RPNewsList.DataSource = pds;
RPNewsList.DataBind();
}

protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
searchOrders((string)strQuery);
}
试一下这样子可以不?
gongsun 2009-12-04
  • 打赏
  • 举报
回复
...
逍遥游007 2009-12-04
  • 打赏
  • 举报
回复
楼主把AspNetPager控件的UrlPaging属性设为false试一下吧!
hanyise520 2009-12-04
  • 打赏
  • 举报
回复
你把你搜索后的条件存起来,下次post的时候 在用
tzs2304 2009-12-04
  • 打赏
  • 举报
回复
Request.Form["txtKeyWord"] 是不是找不到txtKeyWord这个控件ID啊 比如说用了模板页ID变了
skyjoy2006 2009-12-04
  • 打赏
  • 举报
回复
晕倒,我现在就是post传值方式。

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧