【发布时间】:2019-01-23 10:03:11
【问题描述】:
我有一个 MyListView 类,它继承自 ASP.NET ListView。我想实现一个默认行为——如果程序员没有在 aspx 代码中指定 EmptyDataTemplate,MyListView 将使用预定义的默认模板(MyEmptyDataTemplate 类)。
我试过的是这样的:
public class MyListView : ListView
{
protected override void CreateChildControls()
{
if (EmptyDataTemplate == null)
EmptyItemTemplate = new MyEmptyDataTemplate();
base.CreateChildControls();
}
}
MyEmptyDataTemplate 实现 ITemplate 接口。问题是,MyEmptyDataTemplate 的 InstantiateIn() 方法永远不会被调用,如果数据源中没有记录,我的默认模板永远不会出现。显然我错误地理解 ListView 组件生命周期和模板应该设置在其他地方。
【问题讨论】: