_ItemDataBound事件内,我想对最后一条数据进行一些特殊处理
所以需要取得当前的索引号和总记录数
前者用e.items.itemindex可以获得,但是总数如何获得呢?请教

解决方案 »

  1.   

    总数可以在绑定前就得到,比如
    DataTable.Rows.Count等
      

  2.   

    这要看你的数据源,比如是DataTable或者List<T>,绑定前可以得到,如果是DataReader,绑定时只能得到当前索引,但不能得到记录总数
      

  3.   

    还有其他方法吗?可以在_ItemDataBound事件内获取总数因为数据绑定是在其他方法内获取和绑定的,我不希望在_ItemDataBound事件内再获取一次数据,这会消耗数据库开销的。还有一个办法是把数据源在绑定时候赋值给全局变量,但这并不是一个好的设计。
      

  4.   

    ItemDataBound事件的ItemType==Header的时候获取,要要不然,就不能判断最后是哪个了。
    无需再次读取数据库的,只需操作数据源即可
      

  5.   

    直接从repeater的DataSource属性获取行吗,控件本身就是全局定义的。
      

  6.   

    我尝试使用
    Repeater rpt = ((Repeater)sender);
    rpt.Items.Count;发现并不能获取总数,而且0,1,2,3。
    相当于e.items.itemindex
      

  7.   

    在数据源就可以获得数据总数的.例如一楼的DataTable,或者DataSet.Tables[0].rows.Count 
      

  8.   

      int DataCount = 0;
      protected void Page_Load(object sender, EventArgs e)
      {
        Repeater1.DataSource = CreateMengxianhuiDataSource();
        System.Data.DataTable d = Repeater1.DataSource as System.Data.DataTable;
        DataCount = d.Rows.Count;
        Repeater1.DataBind();
      } protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
      {
        if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
        {
          if (DataCount - 1 == e.Item.ItemIndex)
          {
            Response.Write("xx");
          }
        }
      }