<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
</ItemTemplate>
</asp:Repeater>
怎样重写ItemTemplate.
或者怎样新建一个类,能实现
<asp:Repeater ID="Repeater1" runat="server">
<Test>
</Test>
</asp:Repeater>
这样能用我自己的集合
<ItemTemplate>
</ItemTemplate>
</asp:Repeater>
怎样重写ItemTemplate.
或者怎样新建一个类,能实现
<asp:Repeater ID="Repeater1" runat="server">
<Test>
</Test>
</asp:Repeater>
这样能用我自己的集合
解决方案 »
- GridView中的CommandField列咋设置才能显示成一行啊
- 怎么用.net读取一个.txt的文本文件,并将读出的内容存入Oracle9I数据库中~!急!在线等!
- 决定使用静态方法还是一个类的实例
- SqlDataReader取值的问题
- 请教做过论坛的大人们:论坛版主权限是如何限制的啊?
- dropdownlist中DataTextField绑定的是数据库中的标题,怎么在标题超过三个字时自动将其截断
- 如何判断编辑框中输入的日期有效性
- 请问大家是用什么形式保存View的?
- 想学习一下,组件/控件的开发,请问一下大家有什么书籍好介绍的
- 再问一个INSERT INTO 语句的语法错误?
- c#调用Java webservice中返回值为list<map>的具体方法
- web config的这句话应放在什么位置啊
<AlternatingItemTemplate></AlternatingItemTemplate>
<FooterTemplate></FooterTemplate>
<HeaderTemplate></HeaderTemplate>
<ItemTemplate></ItemTemplate>
<SeparatorTemplate></SeparatorTemplate>原来的repeater只有这5种集合啊,我想自己添加一个集合上去
{
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可以显示数据,别的都不生效
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看下源代码就会搞了
if (MyTemplate != null)
{
MyTemplate.InstantiateIn(this);
}可以写在 OnDataBinding 中
这个模板理论上是跟Repeater无关的。
只有在使用Repeater的时候,显式的给它增加Template