遍历不了repeater最后一条数据,怎么办呢?

gootey 2011-12-11 01:12:59
终于找到一个好办法了。

原帖:http://topic.csdn.net/u/20111208/15/419ab0e2-ff70-4e95-a7bf-a92e6f346dee.html

我用foreach遍历这个repeater,然后再加上对登录名和时间的判断,就基本达到我的要求了。

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
foreach (RepeaterItem ite in Repeater1.Items)
{
Label lbtjr = ite.FindControl("tjr") as Label;
Label lbtjsj = ite.FindControl("tjsj") as Label;
LinkButton lbbj = ite.FindControl("bj") as LinkButton;
LinkButton lbsc = ite.FindControl("sc") as LinkButton;
if (lbtjr.Text != Session["user"].ToString() || Math.Abs((DateTime.Now - Convert.ToDateTime(lbtjsj.Text)).TotalHours) > 24)
{
lbbj.Enabled = false;
lbsc.Enabled = false;
}
}


但是还有一个小问题:不管我的登录名是什么,也不管最后一行的数据是什么时间提交的,每一页的最后一行总是可操作的,应该说,这最后一行没有遍历到?我也试过把pds.PageSize = 15;改成8或者20或者其它数字,无一凑效,仍然是最后一行总是在我的掌控之外。我郁闷了。敢问大哥们,这是什么情况?

...全文
209 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckassassin 2014-08-04
  • 打赏
  • 举报
回复
我也遇到了这样的问题,请问你的问题解决了吗?
真我风采 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gootey 的回复:]

引用 8 楼 sandy945 的回复:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

这个判断语句是写在 Repeater 的 ItemDataBind 中的

有多少行该方法就会执行多少次,本身就是遍历了

就没必要在该方法内部再遍历了。……
[/Quote]

绑定的时候本身就是按每行来的。。每行绑定你还在内部遍历一下已经绑定的每行。多余了不是。问题出在这
阿非 2011-12-11
  • 打赏
  • 举报
回复
正常应该不会的,会是你 foreach (RepeaterItem ite in Repeater1.Items) 中代码的问题

具体需要跟踪才能发现。
gootey 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sandy945 的回复:]
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

这个判断语句是写在 Repeater 的 ItemDataBind 中的

有多少行该方法就会执行多少次,本身就是遍历了

就没必要在该方法内部再遍历了。
[/Quote]
啊,一语点醒梦中人呀。。。。
原来我相当于遍历了两次这个Repeater了,在把foreach循环去掉以后,稍加修改,就没问题了。
感谢阿非,不过,为什么遍历两次就会出现最后一行总是不受控的状态?不懂。
阿非 2011-12-11
  • 打赏
  • 举报
回复
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

这个判断语句是写在 Repeater 的 ItemDataBind 中的

有多少行该方法就会执行多少次,本身就是遍历了

就没必要在该方法内部再遍历了。
gootey 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sandy945 的回复:]

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
foreach (RepeaterItem ite in Repeater1.Items)
{
------------------
这个写法肯定是不对的。
……
[/Quote]

嗯?为什么不对呢?我这里没有报错,而且除了最后一行有问题外,其它的都符合我的要求了。
阿非 2011-12-11
  • 打赏
  • 举报
回复
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
foreach (RepeaterItem ite in Repeater1.Items)
{
------------------
这个写法肯定是不对的。

但最后一行不受控制的原因现在 还看不出来,你可以断点调试一下
gootey 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sp1234 的回复:]

没有看你的链接。

如果你只是想跟踪到底是什么数据绑定到Repeater上了,完全没有必要去反过来遍历Repeater,只要注册处理它的ItemDataBound事件就可以了。比如你可以仅仅写一行代码、把 e.Item 的内容赋值给当前对象的一个 private 变量里,然后在其它地方去读取这个变量的值。
[/Quote]
是每一行有两个按钮,我是想通过遍历repeater来判断当前登录的名字是否与帖子的作者一样,还有是否提交时间超过了24小时,然后给出相应的操作权限。应该是比较笨的方法,但是目前只想到这个比较好的,嘿嘿。另外,我有点担心,如果我的数据有10多万条的话,那岂不是遍历的时间会很长?当然,这是后话。目前的问题是为什么最后的一条数据总是不受控?
  • 打赏
  • 举报
回复
我没有看懂你到底要做什么。不过一个建议,多多理解事件驱动的思路,多多写出简单的代码,不要写一大堆遍历之类的代码。
  • 打赏
  • 举报
回复
没有看你的链接。

如果你只是想跟踪到底是什么数据绑定到Repeater上了,完全没有必要去反过来遍历Repeater,只要注册处理它的ItemDataBound事件就可以了。比如你可以仅仅写一行代码、把 e.Item 的内容赋值给当前对象的一个 private 变量里,然后在其它地方去读取这个变量的值。
gootey 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 forevernome 的回复:]
sql语句的问题?
[/Quote]
不会吧。。哥

private PagedDataSource pds()
{
string connstring = ConfigurationManager.ConnectionStrings["WHConn"].ConnectionString;
SqlConnection con = new SqlConnection(connstring);

DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter("select * from gzhz order by 时间1 desc", con);
sda.Fill(ds, "gz");
PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds.Tables["gz"].DefaultView;
pds.AllowPaging = true;
pds.PageSize = 15;
pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]);
return pds;
}
小豪 2011-12-11
  • 打赏
  • 举报
回复
sql语句的问题?

62,046

社区成员

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

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

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

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