在前台Repeater控件中用<%=one%>写一个变量!
然后在后台代码的ItemDataBound事件中给这个变量赋值
private void myDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
  if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem){
    one=e.Item.ItemIndex;
    }
}
为何结果是每行输出的变量one的内容都是最后一行的行数?

解决方案 »

  1.   

    因为最后一次把所有的ONE都覆盖成最后一行的值了吧
      

  2.   

    这个事件难道不是这样执行的吗:
    先绑定数据,绑定后执行ItemDataBound事件,然后显示该项内容?这样一项一项执行下来,我的这个变量值也应该会递增显示出来才对啊?
    难道是执行完所有项的ItemDataBound事件后再显示出所有的项吗?(如果这样理解是那么显示出来的变量值为最后一行的值就是对的了)
    上面两种执行顺序是哪种正确呢?望高手解答
      

  3.   

    你在one=e.Item.ItemIndex;
    设一个断点就知道了
      

  4.   

    <%=one%> 
    >> <%#one%>其实不用这么麻烦
    只需要在前台添加一个模板列,绑定ItemIndex+1就可以了 
     <asp:TemplateColumn HeaderText="选择"> 
     <ItemTemplate> 
     <%# Container.ItemIndex+1%>        
     </ItemTemplate> 
     </asp:TemplateColumn>