<asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
        
        </ItemTemplate>
        </asp:Repeater>
怎样重写ItemTemplate.
或者怎样新建一个类,能实现
        <asp:Repeater ID="Repeater1" runat="server">
        <Test>
        
        </Test>
        </asp:Repeater>
这样能用我自己的集合

解决方案 »

  1.   


            <AlternatingItemTemplate></AlternatingItemTemplate>
            <FooterTemplate></FooterTemplate>
            <HeaderTemplate></HeaderTemplate>
            <ItemTemplate></ItemTemplate>
            <SeparatorTemplate></SeparatorTemplate>原来的repeater只有这5种集合啊,我想自己添加一个集合上去
      

  2.   

    repeater控件要自己定义方法,很麻烦
      

  3.   

    http://topic.csdn.net/u/20100524/13/4da47485-33a7-4d0a-bfd4-d7a4d7931f59.html
      

  4.   

    其实 repeater 很好用  自己写方法 自己控制样式 lz说的意思 不是太明白啊
      

  5.   

    我看了这个,但是我用        protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);            if (MyTemplate != null)
                {
                    Control ctrl = new Control();                MyTemplate.InstantiateIn(ctrl);                Controls.Add(ctrl);
                }
            }        private ITemplate _MyTemplate;        [Browsable(false)]
            [PersistenceMode(PersistenceMode.InnerProperty)]
            [TemplateContainer(typeof(MohuFramework.WebControl.Repeater))]
            public ITemplate MyTemplate
            {
                get { return _MyTemplate; }
                set { _MyTemplate = value; }
            }        <Test>asdads<%#Eval("nothing") %></Test>
            <ItemTemplate><%#Eval("nothing") %></ItemTemplate>
            <MyTemplate><br />asfaf</MyTemplate>
    只有ItemTemplate可以显示数据,别的都不生效
      

  6.   


    public class Repeater : Control, INamingContainer
    {
        // Fields
        private DataSourceSelectArguments _arguments;
        private DataSourceView _currentView;
        private bool _currentViewIsFromDataSourceID;
        private bool _currentViewValid;
        private bool _inited;
        private bool _pagePreLoadFired;
        private bool _requiresDataBinding;
        private bool _throwOnDataPropertyChange;
        private ITemplate alternatingItemTemplate;
        private object dataSource;
        private static readonly object EventItemCommand;
        private static readonly object EventItemCreated;
        private static readonly object EventItemDataBound;
        private ITemplate footerTemplate;
        private ITemplate headerTemplate;
        internal const string ItemCountViewStateKey = "_!ItemCount";
        private ArrayList itemsArray;
        private RepeaterItemCollection itemsCollection;
        private ITemplate itemTemplate;
        private ITemplate separatorTemplate;    // Events
        [WebCategory("Action"), WebSysDescription("Repeater_OnItemCommand")]
        public event RepeaterCommandEventHandler ItemCommand;
        [WebCategory("Behavior"), WebSysDescription("DataControls_OnItemCreated")]
        public event RepeaterItemEventHandler ItemCreated;
        [WebCategory("Behavior"), WebSysDescription("DataControls_OnItemDataBound")]
        public event RepeaterItemEventHandler ItemDataBound;    // Methods
        static Repeater();
        public Repeater();
        private DataSourceView ConnectToDataSourceView();
        protected internal override void CreateChildControls();
        protected virtual void CreateControlHierarchy(bool useDataSource);
        protected virtual DataSourceSelectArguments CreateDataSourceSelectArguments();
        protected virtual RepeaterItem CreateItem(int itemIndex, ListItemType itemType);
        private RepeaterItem CreateItem(int itemIndex, ListItemType itemType, bool dataBind, object dataItem);
        public override void DataBind();
        protected void EnsureDataBound();
        protected virtual IEnumerable GetData();
        protected virtual void InitializeItem(RepeaterItem item);
        protected override bool OnBubbleEvent(object sender, EventArgs e);
        protected override void OnDataBinding(EventArgs e);
        protected virtual void OnDataPropertyChanged();
        protected virtual void OnDataSourceViewChanged(object sender, EventArgs e);
        protected internal override void OnInit(EventArgs e);
        protected virtual void OnItemCommand(RepeaterCommandEventArgs e);
        protected virtual void OnItemCreated(RepeaterItemEventArgs e);
        protected virtual void OnItemDataBound(RepeaterItemEventArgs e);
        protected internal override void OnLoad(EventArgs e);
        private void OnPagePreLoad(object sender, EventArgs e);
        protected internal override void OnPreRender(EventArgs e);    // Properties
        [DefaultValue((string) null), TemplateContainer(typeof(RepeaterItem)), WebSysDescription("Repeater_AlternatingItemTemplate"), PersistenceMode(PersistenceMode.InnerProperty), Browsable(false)]
        public virtual ITemplate AlternatingItemTemplate { get; set; }
        public override ControlCollection Controls { get; }
        [WebSysDescription("Repeater_DataMember"), DefaultValue(""), WebCategory("Data")]
        public virtual string DataMember { get; set; }
        [Bindable(true), WebSysDescription("BaseDataBoundControl_DataSource"), WebCategory("Data"), DefaultValue((string) null), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public virtual object DataSource { get; set; }
        [WebSysDescription("BaseDataBoundControl_DataSourceID"), DefaultValue(""), IDReferenceProperty(typeof(DataSourceControl)), WebCategory("Data")]
        public virtual string DataSourceID { get; set; }
        [Browsable(true)]
        public override bool EnableTheming { get; set; }
        [Browsable(false), PersistenceMode(PersistenceMode.InnerProperty), TemplateContainer(typeof(RepeaterItem)), WebSysDescription("Repeater_FooterTemplate"), DefaultValue((string) null)]
        public virtual ITemplate FooterTemplate { get; set; }
        [DefaultValue((string) null), PersistenceMode(PersistenceMode.InnerProperty), TemplateContainer(typeof(RepeaterItem)), WebSysDescription("WebControl_HeaderTemplate"), Browsable(false)]
        public virtual ITemplate HeaderTemplate { get; set; }
        protected bool Initialized { get; }
        protected bool IsBoundUsingDataSourceID { get; }
        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), WebSysDescription("Repeater_Items")]
        public virtual RepeaterItemCollection Items { get; }
        [PersistenceMode(PersistenceMode.InnerProperty), Browsable(false), TemplateContainer(typeof(RepeaterItem)), WebSysDescription("Repeater_ItemTemplate"), DefaultValue((string) null)]
        public virtual ITemplate ItemTemplate { get; set; }
        protected bool RequiresDataBinding { get; set; }
        protected DataSourceSelectArguments SelectArguments { get; }
        [WebSysDescription("Repeater_SeparatorTemplate"), PersistenceMode(PersistenceMode.InnerProperty), TemplateContainer(typeof(RepeaterItem)), Browsable(false), DefaultValue((string) null)]
        public virtual ITemplate SeparatorTemplate { get; set; }
    }
    这是 Repeater 的实现你可以模仿他开发个自定义控件
    下个Reflector看下源代码就会搞了
      

  7.   

    你在#11写的 是适用于 UserControl 的情况你现在是继承的Repeater 还是 UserControl 
      

  8.   


                if (MyTemplate != null)
                {               
                    MyTemplate.InstantiateIn(this);
                 }可以写在 OnDataBinding 中
      

  9.   

    这个就需要自己写一个模板了,该模板要实现ITemplate接口。
    这个模板理论上是跟Repeater无关的。
    只有在使用Repeater的时候,显式的给它增加Template