ASP.NET ListView - 如何以编程方式设置 EmptyDataTemplate?

标签 asp.net listview

我有一个类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 接口(interface)。问题是,MyEmptyDataTemplate 的 InstantiateIn() 方法永远不会被调用,并且如果数据源中没有记录,我的默认模板也永远不会出现。显然我错误地理解了 ListView 组件生命周期,模板应该设置在其他地方。

最佳答案

尝试在 Init 事件中执行此操作:

public class MyListView : ListView
{
    public MyListView()
    {
       this.Init += (o, e) =>
            { 
                if (EmptyDataTemplate == null)
                     EmptyDataTemplate = new MyEmptyDataTemplate();
            };
    }
}

编辑 再次检查后,我意识到 EmptyDataTemplate 被检查为空,但已分配的模板是 EmptyItemTemplate。然而,这两种方法都可以很好地实例化模板。

关于ASP.NET ListView - 如何以编程方式设置 EmptyDataTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515293/

相关文章:

android - 检查 Activity 是否已完成加载所有数据而不更改应用程序代码

asp.net - ASP.NET 的电子邮件地址验证

asp.net - ASPXGridView (devexpress) 超链接列排序

c# - 从 Azure C# 应用程序到远程 MySQL 服务器的随机连接问题

Java Android根据Observable<List<Object>>改变ListView对象

Android:ListView 选择器无法正常工作

c# - 如何从 Asp.net 中的 web api 访问客户端项目目录

c# - 如何处理此类问题 UnauthorizedAccessException Was handli Error?

Android:如何使用光标在 ListView 中获取所选项目?

android - 我只想在左右角添加阴影