if (GetPds().DataSourceCount != 0)
        {
            if (e.Item.ItemType == ListItemType.Footer)
            {
                PlaceHolder ph = (PlaceHolder)e.Item.FindControl("numeric");
                int pageCount = GetPds().PageCount;
                int curPage = GetPds().CurrentPageIndex + 1;
                int startIndex = (curPage - 1) / 5 * 5 + 1;//根据当前页得到第一个页码
                int endIndex = startIndex + 4;//显示10个页码
                if (endIndex > pageCount)//判断是否为最后一页
                {
                    endIndex = pageCount;
                }
                for (int i = startIndex; i <= endIndex; i++)//通过循环动态显示页码
                {
                    var hl = new HyperLink { ID = "hl" + i, Text = i.ToString() , NavigateUrl = "?page=" + i };
                    ph.Controls.Add(i != curPage ? (Control)hl : new LiteralControl(i.ToString()));
                    ph.Controls.Add(new LiteralControl(" "));
                }
            }
        }

解决方案 »

  1.   

    var hl = new HyperLink { ID = "hl" + i, Text = i.ToString() , NavigateUrl = "?page=" + i };
    这句话早05下报错,在08下没有问题,请问在05下面想用,怎么改?
    还有就是这里的vsr是什么意思?难道是javascript里面的变量,可是写在后台代码里面的呀。
      

  2.   

    var  在08里面可以用,在05里面没有类库支持!类型推断 var
     声明变量的语法有些变化。编译器可以根据变量的初始化值“推断”变量的类型。
     规则:
     变量必须初始化。否则编译器就没有推断变量的类型依据。
     初始化器不能为空,且必须放在表达式中。
     不能把初始化器设置为一个对象,除非在初始化器中创建一个新对象。 匿名类型:
      var与new关键字一起使用时,可以创建匿名类型。它是一个继承了Object的、没有名称的类。该类的定义从初始化器中推断,类似于隐式类型化的变量。
      如果需要一个对象包含某个人的姓氏、中间名和名字,则声明如下:
      var captain=new {FirstName="James",MiddleName="T",LastName="Kirk"};
      这会生成一个包含FirstName、MiddleName和LastName的属性对象。如果创建另一个对象,如下所示:
      var doctor =new {FirstName="Leonard",MiddleName="",LastName="McCoy"};
      captain和doctor的类型就是相同的。例如,可以设置caption=doctor。  如果设置的的值来源于另一个对象,初始化器可以简化。如果已经有一个包含FirstName、MiddleName和LastName的属性的类,且有一个该类的实例person,caption对象就可以初始化为:
      var caption = new {person.FirstName,person.MiddeName,person.LastName};  person对象的属性名应该投射为新对象名caption。所以caption对象应有FirstName、MiddleName和LastName属性。  这些新对象的类型名都是未知的。编译器为类型“伪造”了一个名称,但只有编译器才能使用它。我们不能也不应该使用新对象上的任何类型引用,因为不会得到一致的结果。