repeater分页

ww7610 2012-04-27 10:12:44
//Repeater分页控制显示方法
public void contrlRepeater(int userId)
{
string connectionString = ConfigurationManager.ConnectionStrings["db_health"].ConnectionString;
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
string sql = "select * from health_user_followup_content where user_id=" + userId + "";
SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet();
sda.Fill(ds,"FollowContent");
PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds.Tables["FollowContent"].DefaultView;
pds.AllowPaging = true;
pds.PageSize = 5;
pds.CurrentPageIndex = Convert.ToInt32(this.labPage.Text) - 1;
rpUserList.DataSource = pds;
LabCountPage.Text = pds.PageCount.ToString();
labPage.Text = (pds.CurrentPageIndex + 1).ToString();
this.lbtnpritPage.Enabled = true;
this.lbtnFirstPage.Enabled = true;
this.lbtnNextPage.Enabled = true;
this.lbtnDownPage.Enabled = true;
if (pds.CurrentPageIndex < 1)
{
this.lbtnpritPage.Enabled = false;
this.lbtnFirstPage.Enabled = false;
}
if (pds.CurrentPageIndex == pds.PageCount - 1)
{
this.lbtnNextPage.Enabled = false;
this.lbtnDownPage.Enabled = false;
}
rpUserList.DataBind();
}

pds.CurrentPageIndex = Convert.ToInt32(this.labPage.Text) - 1;————刚点击进入页面时,为什么我这句会提示:”输入字符串的格式不正确”
...全文
125 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
全局变量 2012-04-27
  • 打赏
  • 举报
回复
看你的代码思路不是很清晰。
//直接传页码 在第一次加载时 this.labPage.Text = "1";
public void contrlRepeater(int userId,int page)

pds.CurrentPageIndex =page-1;
//有想法就自己写个分页控件, 封装所有分页属性。 在项目才能得共用复用。
.云哲. 2012-04-27
  • 打赏
  • 举报
回复
细节问题自己调试。
ww7610 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

调试一下 看这个的转换结果是什么 Convert.ToInt32(labPage.Text) - 1;
[/Quote]

如果去掉this.labPage.Text = "1";会报错
如果加上this.labPage.Text = "1";就直接运行通过,currentpageindex为0
ww7610 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

你没发现问题么?

如:contrlRepeater(userId);
this.labPage.Text = "1";

this.labPage.Text = "1";
contrlRepeater(userId);
//this.labPage.Text = "1"; 确实意义已经不大了。
pds.CurrentPageIndex =(this.labPage.Tex……
[/Quote]


1.如果去掉this.labPage.Text = "1";
pds.CurrentPageIndex =(this.labPage.Text==null?1:("".Equals(this.labPage.Text)?1: Convert.ToInt32(this.labPage.Text))) - 1;会报出刚才的错误
2.如果加上this.labPage.Text = "1";同事放在调用那个方法的前面
你给的那句就不会有错误,currentpageindex为0
莫待 2012-04-27
  • 打赏
  • 举报
回复
调试一下 看这个的转换结果是什么 Convert.ToInt32(labPage.Text) - 1;
全局变量 2012-04-27
  • 打赏
  • 举报
回复
你没发现问题么?

如:contrlRepeater(userId);
this.labPage.Text = "1";

this.labPage.Text = "1";
contrlRepeater(userId);
//this.labPage.Text = "1"; 确实意义已经不大了。
pds.CurrentPageIndex =(this.labPage.Text==null?1:("".Equals(this.labPage.Text)?1: Convert.ToInt32(this.labPage.Text))) - 1;
你有调试下这句话么.
编程要有严谨性.

要不你以后编写代码会很吃力的。
ww7610 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

你这个方法是在 Load事件么?
在页面加载的时候控制还未生成!
this.labPage还未被实例化
好好调试看看this.labPage是什么状态。
[/Quote]

刚才那个改好了,现在也能显示共几页,当前几页,就是上一页下一页没有作用,到第二个页面没有数据
ww7610 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

你这个方法是在 Load事件么?
在页面加载的时候控制还未生成!
this.labPage还未被实例化
好好调试看看this.labPage是什么状态。
[/Quote]

我是在page_load里面调用方法,写了如下两句
如:contrlRepeater(userId);
this.labPage.Text = "1";


然后下面写了刚才发的方法加上按钮的事件
如下:
//Repeater分页控制显示方法
public void contrlRepeater(int userId)
{
string connectionString = ConfigurationManager.ConnectionStrings["db_health"].ConnectionString;
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
string sql = "select * from health_user_followup_content where user_id=" + userId + "";
SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet();
sda.Fill(ds,"FollowContent");
PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds.Tables["FollowContent"].DefaultView;
pds.AllowPaging = true;
pds.PageSize = 5;
pds.CurrentPageIndex =Convert.ToInt32(labPage.Text) - 1;
//pds.CurrentPageIndex = (this.labPage.Text == null ? 1 : ("".Equals(this.labPage.Text) ? 1 : Convert.ToInt32(this.labPage.Text))) - 1;
rpUserList.DataSource = pds;
LabCountPage.Text = pds.PageCount.ToString();
labPage.Text = (pds.CurrentPageIndex + 1).ToString();
this.lbtnpritPage.Enabled = true;
this.lbtnFirstPage.Enabled = true;
this.lbtnNextPage.Enabled = true;
this.lbtnDownPage.Enabled = true;
if (pds.CurrentPageIndex <= 1)
{
this.lbtnpritPage.Enabled = false;
this.lbtnFirstPage.Enabled = false;
}
if (pds.CurrentPageIndex == pds.PageCount - 1)
{
this.lbtnNextPage.Enabled = false;
this.lbtnDownPage.Enabled = false;
}
rpUserList.DataBind();
}



protected void lbtnpritPage_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) - 1);
this.contrlRepeater(userId);
}

protected void lbtnFirstPage_Click(object sender, EventArgs e)
{
this.labPage.Text = "1";
this.contrlRepeater(userId);
}

protected void lbtnDownPage_Click(object sender, EventArgs e)
{
this.labPage.Text = this.LabCountPage.Text;
this.contrlRepeater(userId);
}

protected void lbtnNextPage_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) + 1);
this.contrlRepeater(userId);
}
全局变量 2012-04-27
  • 打赏
  • 举报
回复
你这个方法是在 Load事件么?
在页面加载的时候控制还未生成!
this.labPage还未被实例化
好好调试看看this.labPage是什么状态。
ww7610 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

this.labPage.Text 首先需要判断是否有值而且是数字
[/Quote]

this.labPage.Text = "1";
我在开始加载页面时候写了这么一句
rczjp 2012-04-27
  • 打赏
  • 举报
回复
this.labPage.Text 首先需要判断是否有值而且是数字
ww7610 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

C# code

pds.CurrentPageIndex =(this.labPage.Text==null?1:("".Equals(this.labPage.Text)?1: Convert.ToInt32(this.labPage.Text))) - 1;


有可能是null 或""无法正确转型
[/Quote]

还是显示字符串格式不正确
全局变量 2012-04-27
  • 打赏
  • 举报
回复

pds.CurrentPageIndex =(this.labPage.Text==null?1:("".Equals(this.labPage.Text)?1: Convert.ToInt32(this.labPage.Text))) - 1;

有可能是null 或""无法正确转型

62,267

社区成员

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

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

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

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