AspNetPager搜索分页问题,急!`````

a511900703 2010-10-28 09:57:02
const string vsKey = "searchCriteria";
protected void Page_Load(object sender, EventArgs e)
{
if (!this.Page.IsPostBack)
{
DataBinder(string.Empty);
}
}

private void DataBinder(string strContext)
{
DataSet dscount = BLL.UserInfoBLL.GetUserCount(strContext);
this.AspNetPager.RecordCount = int.Parse(dscount.Tables[0].Rows[0][0].ToString());
int startIndex = AspNetPager.CurrentPageIndex;
DataView dv = BLL.UserInfoBLL.GetUserCountPage(AspNetPager.PageSize, startIndex, strContext);
PagedDataSource pgs = new PagedDataSource();

pgs.DataSource = dv;
pgs.AllowPaging = true;
pgs.CurrentPageIndex = AspNetPager.CurrentPageIndex - 1;
pgs.PageSize = AspNetPager.PageSize;
this.Repeater.DataSource = pgs;
this.Repeater.DataBind();
}

protected void AspNetPager_PageChanged(object src, EventArgs e)
{
DataBinder((string)ViewState[vsKey]);
}
protected void btnSelect_Click(object sender, EventArgs e)
{
AspNetPager.CurrentPageIndex = 1;
string s = txtSelect.Text.Trim();
ViewState[vsKey] = s;
DataBinder(s);
}

不知道是哪里出问题了。这个分页我弄了2天了,还是不行。这代码,基本上就跟例子上的一样的。不知道为啥我这个不行
大家帮忙看一下。

解决给分!
...全文
371 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
danjiewu 2010-10-29
  • 打赏
  • 举报
回复

const string vsKey = "searchCriteria";
protected void Page_Load(object sender, EventArgs e)
{
if (!this.Page.IsPostBack)
{
ViewState[vsKey]=Request.QueryString["SearchFor"];
DataBinder(Request.QueryString["SearchFor"]);
}
}

private void DataBinder(string strContext)
{
DataSet dscount = BLL.UserInfoBLL.GetUserCount(strContext);
this.AspNetPager.RecordCount = int.Parse(dscount.Tables[0].Rows[0][0].ToString());
int startIndex = AspNetPager.CurrentPageIndex;
DataView dv = BLL.UserInfoBLL.GetUserCountPage(AspNetPager.PageSize, startIndex, strContext);
PagedDataSource pgs = new PagedDataSource();

pgs.DataSource = dv;
pgs.AllowPaging = true;
pgs.CurrentPageIndex = AspNetPager.CurrentPageIndex - 1;
pgs.PageSize = AspNetPager.PageSize;
this.Repeater.DataSource = pgs;
this.Repeater.DataBind();
}

protected void AspNetPager_PageChanged(object src, EventArgs e)
{
DataBinder((string)ViewState[vsKey]);
}
protected void btnSelect_Click(object sender, EventArgs e)
{
string s = txtSelect.Text.Trim();
Response.Redirect(Request.Path+"?SearchFor="+HttpUtility.UrlEncode(s),true);
}


AspNetPager_PageChanged可以去掉,Url方式可能不会触发AspNetPager_PageChanged事件。
kwp_911229 2010-10-28
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
int totalOrders = NewPLManager.GetAllByStu(nid).Count;
AspNetPager1.RecordCount = totalOrders;
this.AspNetPager1.PageSize = 8; // 每页显示X条记录
}



#region 分页显示数据
void bindData()
{
//分页查询方法
int nid = Convert.ToInt32(Request.QueryString["nid"]);
Repeater1.DataSource = (List<NewPL>)NewPLManager.AdminPage(AspNetPager1.StartRecordIndex, AspNetPager1.EndRecordIndex, nid);
Repeater1.DataBind();//数据绑定
}
protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
bindData();
}
#endregion




代码都贴给你了 .. 把一些方法改掉就可以了
hookyzlr 2010-10-28
  • 打赏
  • 举报
回复
AspNetPager.CurrentPageIndex = 1这句话去掉
gz0817 2010-10-28
  • 打赏
  • 举报
回复

AspNetPager1.PageSize = PageSize;
AspNetPager1.RecordCount = recordCount;
AspNetPager1.UrlPaging = true;
AspNetPager1.EnableUrlRewriting = true;
AspNetPager1.UrlRewritePattern = "Itemlist.aspx?pageIndex={0}&key=" + txtKey.Value+
"&ClassId=" + HidClassId.Value +
"&second=" + Hidsecond.Value +
"&AdminId=" + selAdminId.SelectedValue +
"&Shelf=" + ddlShelf.SelectedValue +
"&isend=" + Hidfiled.Value + "";
AspNetPager1.ShowPageIndexBox = Wuqi.Webdiyer.ShowPageIndexBox.Always;
AspNetPager1.PageIndexBoxType = Wuqi.Webdiyer.PageIndexBoxType.TextBox;

danjiewu 2010-10-28
  • 打赏
  • 举报
回复
如果用Url的方式分页,每次都是重新打开页面,没有postback,控件的值和viewstate都会清空。
所以只有2个办法
1是改用postback的方式分页
2如果必须用url的方式,那么必须把需要保持的状态通过url传递,然后在打开页面时解析url得到状态。

你可以看下google怎么分页的
段传涛 2010-10-28
  • 打赏
  • 举报
回复
没有看 你的 代码
参考我的
-------------------------------------
DataCon myCon = new DataCon();
DataOperate sqlBind = new DataOperate();
SqlConnection sqlconn;
protected void Page_Load(object sender, EventArgs e)
{
dlBind();
}
public void dlBind()
{
int curpage = Convert.ToInt32(this.labPage.Text);
PagedDataSource ps = new PagedDataSource();
sqlconn = myCon.getCon();
sqlconn.Open();
string sqlstr = "select a.*,b.* from tb_Card as a join tb_Module as b on a.ModuleID=b.ModuleID";
SqlDataAdapter MyAdapter = new SqlDataAdapter(sqlstr, sqlconn);
DataSet ds = new DataSet();
MyAdapter.Fill(ds, "tb_Card");
ps.DataSource = ds.Tables["tb_Card"].DefaultView;
ps.AllowPaging = true; //是否可以分页
ps.PageSize = 2; //显示的数量
ps.CurrentPageIndex = curpage - 1; //取得当前页的页码
this.lnkbtnUp.Enabled = true;
this.lnkbtnNext.Enabled = true;
this.lnkbtnBack.Enabled = true;
this.lnkbtnOne.Enabled = true;
if (curpage == 1)
{
this.lnkbtnOne.Enabled = false;//不显示第一页按钮
this.lnkbtnUp.Enabled = false;//不显示上一页按钮
}
if (curpage == ps.PageCount)
{
this.lnkbtnNext.Enabled = false;//不显示下一页
this.lnkbtnBack.Enabled = false;//不显示最后一页
}
this.labBackPage.Text = Convert.ToString(ps.PageCount);
this.dlContent.DataSource = ps;
this.dlContent.DataKeyField = "CardID";
this.dlContent.DataBind();
}
protected void lnkbtnOne_Click(object sender, EventArgs e)
{
this.labPage.Text = "1";
this.dlBind();
}
protected void lnkbtnUp_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) - 1);
this.dlBind();
}
protected void lnkbtnNext_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) + 1);
this.dlBind();
}
protected void lnkbtnBack_Click(object sender, EventArgs e)
{
this.labPage.Text = this.labBackPage.Text;
this.dlBind();
}
nimeide1234567890 2010-10-28
  • 打赏
  • 举报
回复
http://blog.csdn.net/luojianfeng

VS2005+SQL SERVER 2000+AspNetPager1 分页存储
Rock870210 2010-10-28
  • 打赏
  • 举报
回复
public string strFlag
{
get{return viewstate["strflag"].toString();}
set{viewstate["strflag"]=value;}
}
在点击搜索的时候strFlag=txtSelect.Text.Trim();
private void DataBinder(string strContext)不要参数,直接把strContext改成strFlag。
试试
a511900703 2010-10-28
  • 打赏
  • 举报
回复
简单点说,就是页面加载成功之后,可以正常分页,没什么问题, 但是,当我输入搜索条件之后,对查询出来的结果分页的时候,就出问题了。 每次只要一点一个页码,他就会跳到页面加载的时候绑定的数据源上面。朋友说是没有记录搜索状态,但是我不知道咋记录,!!!
Rock870210 2010-10-28
  • 打赏
  • 举报
回复
前台

<div>
<asp:GridView ID="gdvData" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"
Width="100%">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<webdiyer:aspnetpager id="AspNetPager1" runat="server" PageSize="5" AlwaysShow="True" OnPageChanged="AspNetPager1_PageChanged" ShowCustomInfoSection="Left" CustomInfoSectionWidth="40%" ShowPageIndexBox="always" PageIndexBoxType="TextBox"
CustomInfoHTML="第<font color='red'><b>%currentPageIndex%</b></font>页,共%PageCount%页" Width="100%"></webdiyer:aspnetpager>
</div>

后台:

protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
AspNetPager1.RecordCount = DBHelper.GetCount();//得到数据的总数
this.gdvDataBind();//绑定
}
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
this.gdvDataBind();
}

protected void gdvDataBind()
{
this.gdvData.DataSource = DBHelper.GetKbhelpQuestion(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex,0,0,0,0,"","","ID");//GetKbhelpQuestion方法里面用的是分页存储过程
this.gdvData.DataBind();
}
Rock870210 2010-10-28
  • 打赏
  • 举报
回复
要说清楚,到底是怎么不行。出了什么问题。
sh_suyuelin 2010-10-28
  • 打赏
  • 举报
回复
protected void AspNetPager_PageChanged(object src, EventArgs e)
{
DataBinder((string)ViewState[vsKey], this.AspNetPager1.StartRecordIndex - 1));
}
分页你也要知道取第多少条记录把。
a511900703 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 misswangjinfeng 的回复:]
this.AspNetPager.RecordCount = int.Parse(dscount.Tables[0].Rows[0][0].ToString()); 这个应该有误吧。
this.AspNetPager.RecordCount = dscount. Items.Count;
[/Quote]

不是额 dscount 是我专门查询 总记录数的, select count(*) from table
misswangjinfeng 2010-10-28
  • 打赏
  • 举报
回复
this.AspNetPager.RecordCount = int.Parse(dscount.Tables[0].Rows[0][0].ToString()); 这个应该有误吧。
this.AspNetPager.RecordCount = dscount. Items.Count;
a511900703 2010-10-28
  • 打赏
  • 举报
回复
还有这个

<webdiyer:AspNetPager ID="AspNetPager" OnPageChanged="AspNetPager_PageChanged" runat="server"
HorizontalAlign="Center" PagingButtonSpacing="8Px" UrlPaging="true" UrlPageIndexName="p"
PageSize="7" CssClass="pages" CurrentPageButtonClass="cpb" FirstPageText="首页"
LastPageText="末页" NextPageText="下一页" PrevPageText="上一页" ShowMoreButtons="false"
ShowPageIndexBox="Never" AlwaysShow="true">
</webdiyer:AspNetPager>
a511900703 2010-10-28
  • 打赏
  • 举报
回复
谁能给一个这种例子我啊,本人感激不尽!
a511900703 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 liuk_moon 的回复:]
你用了PagesDataSource类了 还用AspNetPager干啥,脱裤子放屁啊。

两个都是分页的,自找麻烦
[/Quote]
我不懂额,这是看那个aspnetpager控件自带的例子里面这样搞的,不过不知道啥意思。
LiuK_Moon 2010-10-28
  • 打赏
  • 举报
回复
你用了PagesDataSource类了 还用AspNetPager干啥,脱裤子放屁啊。

两个都是分页的,自找麻烦
a511900703 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 danjiewu 的回复:]
如果用Url的方式分页,每次都是重新打开页面,没有postback,控件的值和viewstate都会清空。
所以只有2个办法
1是改用postback的方式分页
2如果必须用url的方式,那么必须把需要保持的状态通过url传递,然后在打开页面时解析url得到状态。

你可以看下google怎么分页的
[/Quote]

兄弟,要的就是那个效果,但是,不知道怎么弄!!
加载更多回复(1)
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
内容概要:本文围绕“计及风电不确定性的电力系统黑启动与负荷恢复协同优化”开展研究,提出了一种融合风电出力随机性与波动性的黑启动及负荷恢复协同优化模型,并基于Matlab平台实现了完整的代码仿真与算例验证。研究构建了考虑不确定性因素的优化框架,通过场景生成与削减技术处理风电出力的随机特征,建立了兼顾系统安全性、恢复效率与供电可靠性的多目标优化模型。文中详细阐述了模型的数学建模过程、关键约束条件(如功率平衡、设备启停顺序、网络拓扑约束等)、求解算法设计及黑启动电源优选策略,并通过标准测试系统验证了所提方法在提升灾后恢复能力方面的有效性与优越性。; 适合人群:具备电力系统分析、优化理论及可再生能源并网基础知识,从事电力系统恢复控制、新型电力系统韧性提升、新能源集成等方向研究的研究生、科研人员及电力行业工程技术人才。; 使用场景及目标:①用于电力系统大面积停电后的黑启动方案制定,优化启动电源选择与负荷恢复时序;②为高比例风电接入背景下电力系统的安全稳定与弹性恢复提供决策支持;③作为Matlab仿真教学资源,辅助理解不确定性建模、随机/分布鲁棒优化及电力系统动态恢复过程。; 阅读建议:建议结合提供的Matlab代码进行同步研读,重点掌握风电不确定性建模方法(如场景法)、优化模型构建逻辑与求解流程(如使用YALMIP调用求解器),宜在熟悉基本电力系统运行与优化算法的基础上进行复现与拓展研究。
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!

62,272

社区成员

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

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

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

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