foreach ( RepeaterItem rowitem in this.list.Items  )
{
if (rowitem.ItemType != ListItemType.Item && rowitem.ItemType != ListItemType.AlternatingItem)
continue; role = rowitem.DataItem as Role;
role.ClearPermission();
                        }
上面的代码中 rowitem.DataItem 总是 NULL,
我如何才能循环取得DataItem ?

解决方案 »

  1.   

    你有没有绑定数据啊?
    http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.repeateritem.aspx
      

  2.   

    语句有问题,当满足这个条件:
    if (rowitem.ItemType != ListItemType.Item && rowitem.ItemType != ListItemType.AlternatingItem)
                        continue;
    }
    的时候,就跳出循环了,还怎么执行后面的语句
    (role = rowitem.DataItem as Role;
      role.ClearPermission();
    )?
      

  3.   

    不好意思看错了,还以为那个括号是foreach的呢。
      

  4.   

                foreach ( RepeaterItem rowitem in this.list.Items  )
                {                
                    role = rowitem.DataItem as Role;
                    role.ClearPermission();
                }
    1, 即使这样。rowitem.DataItem依然为NULL
    2, 这段代码是在按钮的Click事件中。已经在其他地方给list绑定数据源了
      

  5.   

    上面的代码中 rowitem.DataItem 总是 NULL, 
    =======
    如果它不能被转换为Role,role也是null
      

  6.   

    我问的就是为啥 rowitem.DataItem 总是NULL
    我如何才能取得 rowitem.DataItem?
      

  7.   

    在OnItemDataBound事件中可以取到
      

  8.   

    DataItem is there only for the item-creation process, that is ItemCreated
    and ItemDataBound methods (ItemCreated when it happens due to call to
    DataBind). After ItemDataBound has run of for the item in question, DataItem
    is explicitly set to null.
      

  9.   

    上面的是在网上找的,大概意思就是DataItem仅仅在项创建过程才有,它是项创建和绑定时的方法,当ItemDataBound已经运行完成了之后,DataItem就会被设置为null