在页面中使用Repeater类显示数据<asp:Repeater id="Repeater1" runat="server">
          <HeaderTemplate>
             <table border="1">
                <tr>
                   <td><b>Company</b></td>
                   <td><b>Symbol</b></td>
                </tr>
          </HeaderTemplate>
          <ItemTemplate>
             <tr>
                <td> <%# DataBinder.Eval(Container.DataItem, "Name") %> </td>
                <td> <%# DataBinder.Eval(Container.DataItem, "Ticker")%> </td>
             </tr>
          </ItemTemplate>
          <FooterTemplate>
             </table>
          </FooterTemplate>Container这个对象是从哪里来的,假如把Container随意换个字符 则vs提示上下文中没有此对象
但我在上下文中也没见声明Container对象是什么类型啊,vs就提示它是Repeater中表示项的RepeaterItem
对象,好像凭空冒出个对象,但我从没见它在哪里定义。

解决方案 »

  1.   

    补充:附上后台代码public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ArrayList values = new ArrayList();            values.Add(new PositionData("Microsoft", "Msft"));
                values.Add(new PositionData("Intel", "Intc"));
                values.Add(new PositionData("Dell", "Dell"));            Repeater1.DataSource = values;
                Repeater1.DataBind();            Repeater2.DataSource = values;
                Repeater2.DataBind();
            }
        }}
    public class PositionData
    {    private string name;
        private string ticker;    public PositionData(string name, string ticker)
        {
            this.name = name;
            this.ticker = ticker;
        }    public string Name
        {
            get
            {
                return name;
            }
        }    public string Ticker
        {
            get
            {
                return ticker;
            }
        }
    }
      

  2.   

    Container根本不是任何一个静态的对象或方法,它是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量,其类型是可以进行数据绑定的控件的数据容器类型(如在Repeater内部的数据绑定容器叫RepeaterItem),在这些容器类中基本都有DataItem属性,因此你可以写Container.DataItem,这个属性返回的是你正在被绑定的数据源中的那个数据项。
    Container是容器,DaTaItem是属性
      

  3.   

    容器,你可以不写哎,假如你不懂的话,直接写成这样就可以了 <ItemTemplate>
                 <tr>
                    <td> <%# Eval("Name") %> </td>
                    <td> <%# Eval("Ticker")%> </td>
                 </tr>
              </ItemTemplate>
      

  4.   

    直接 <%# Eval("Name") %>这么就可以了 03的时候才那么写
      

  5.   

    看MSDN
      

  6.   

    DataBinder是System.Web里面的一个静态类,它提供了Eval方法用于简化数据绑定表达式的编写,但是它使用的方式是通过Reflection等开销比较大的方法来达到易用性,因此其性能并不是最好的。而Container则根本不是任何一个静态的对象或方法,它是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量,其类型是可以进行数据绑定的控件的数据容器类型(如在Repeater内部的数据绑定容器叫RepeaterItem),在这些容器类中基本都有DataItem属性,因此你可以写Container.DataItem,这个属性返回的是你正在被绑定的数据源中的那个数据项。如果你的数据源是DataTable,则这个数据项的类型实际是DataRowView<%# Eval("")%>
    可调用方法,看MSDN
      

  7.   

    支持<%# Eval("Name") %>
      

  8.   

    Container是BindingExpression类型的数据绑定控件容器,它的DataItem是绑定源对象,它返回所有对象的基类是Object类型,如果绑定的是DataTable或DataView,那么DataItem就是DataRowView,如果绑定的是是List<T> 那么DataItem就是T
      

  9.   

    <%# Eval("Name") %>
    这样是可以的,不过楼主那样用,今天又明白个理,哈哈,路过也值得.