在ItemDataBound事件中遍历datalist的每一项

xuyuanming1982 2009-09-08 05:41:02
无法遍历到最后一项.
...全文
276 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
starmilan 2009-11-03
  • 打赏
  • 举报
回复
ItemDataBound 事件中,每次绑定一行执行一次ItemDataBound事件的,你那循环放那里用不上的吧?如果你要在ItemDataBound 里面操作,最好在声明了控件以后,加上if(xxx!=null)这个判断
flyerwing 2009-11-03
  • 打赏
  • 举报
回复
学习
應燁軍 2009-11-03
  • 打赏
  • 举报
回复
MSDN的解释:当项被数据绑定到 DataList 控件后,将引发 ItemDataBound 事件。此事件为您提供了在客户端显示数据项之前访问该数据项的最后机会。当引发此事件后,该数据项不再可用。

bill1986 2009-11-03
  • 打赏
  • 举报
回复
应该写在DataBound里
Roger370 2009-11-03
  • 打赏
  • 举报
回复
无语,ItemDataBound事件是指每行数据绑定后执行的,你根本没理解它的作用和过程。
假设你数据源一共有3行,你现在刚绑定一行,那么ItemDataBound事件里的那个循环,怎么可能会跳到第二行呢???那时对于datalist来说,行数为1啊~,只有在绑定最后行的时候datalist才是3行,你明白不?
fhjzgsy 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 criedshy 的回复:]
C# codeif(e.Item.ItemType== ListItemType.Item||
e.Item.ItemType== ListItemType.AlternatingItem)
{string value= ((Label)e.Item.FindControl("price")).Text;double price= Convert.ToDouble(valu¡­
[/Quote]
ret00100 2009-11-03
  • 打赏
  • 举报
回复
xuyuanming1982 2009-09-08
  • 打赏
  • 举报
回复
不行啊,那些方法都不行
xuyuanming1982 2009-09-08
  • 打赏
  • 举报
回复
都写在item里了啊
criedshy 2009-09-08
  • 打赏
  • 举报
回复

if(e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
string value = ((Label)e.Item.FindControl("price")).Text;
double price = Convert.ToDouble(value);
int count = Convert.ToInt32(((TextBox)e.Item.FindControl("txtCount")).Text);
((Label)e.Item.FindControl("total")).Text = Convert.ToString(price * count);
theTotal = theTotal + price * count;
}

//刚才少写了e.Item.ItemType == ListItemType.AlternatingItem

criedshy 2009-09-08
  • 打赏
  • 举报
回复
你最后一行是页脚吧?
criedshy 2009-09-08
  • 打赏
  • 举报
回复

if(e.Item.ItemType==ListItemType.Item)
{
string value = ((Label)e.Item.FindControl("price")).Text;
double price = Convert.ToDouble(value);
int count = Convert.ToInt32(((TextBox)e.Item.FindControl("txtCount")).Text);
((Label)e.Item.FindControl("total")).Text = Convert.ToString(price * count);
theTotal = theTotal + price * count;
}


试试
xuyuanming1982 2009-09-08
  • 打赏
  • 举报
回复
不行呢,给每项赋值就是最后一项没有值
PandaIT 2009-09-08
  • 打赏
  • 举报
回复
if(e.Item.ItemType != ListItemType.Header)
{
//加上这句,难道是把标题也遍历了
}
SK_Aqi 2009-09-08
  • 打赏
  • 举报
回复
怎么取不到值了?实际上已经遍历了
Aderlee 2009-09-08
  • 打赏
  • 举报
回复
先去好好了解一下ItemDataBound事件。
PandaIT 2009-09-08
  • 打赏
  • 举报
回复
用foreach

foreach   (DateListItem   dl   in   DataList1.Items)
{
//code
}
xuyuanming1982 2009-09-08
  • 打赏
  • 举报
回复
赋不上值
xuyuanming1982 2009-09-08
  • 打赏
  • 举报
回复
是阿,前几天就遇到这个问题了,取不到最后一项
SK_Aqi 2009-09-08
  • 打赏
  • 举报
回复
是否是调试看到它没有遍历到最后一页,只是第一页而已?
就是这样,不知为什么,实际上已遍历了全部的数据.
加载更多回复(4)

62,046

社区成员

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

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

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

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