代码改变世界

扩展Repeater——让Repeater具有EmptyDataTemplate模板功能!

2007-08-15 20:09  魏冉  阅读(3570)  评论(11编辑  收藏  举报
Repeater控件是一个数据显示控件,该控件允许通过为列表中显示的每一项重复使用指定的模板来自定义布局。
相对于GridViews和DataList来说Repeater是一个相当轻巧、灵活的控件,能耗也比它们要小很多。美中不足的是功能略显单薄,尤其是用于绑定的数据源没有数据的情况下,往往要使用一个隐藏面版来显示“暂时没有任何数据”信息。太麻烦了。
于是自行扩展了Repeater控件的EmptyDataTemplate模板已达到同样的效果。
    /// <summary>
    
/// 自定义Repeater 支持EmptyDataTemplate
    
/// 作者:cantops
    
/// </summary>

    public class Repeater :System.Web.UI.WebControls.Repeater
    
{
        
private ITemplate emptyDataTemplate;

        [PersistenceMode(PersistenceMode.InnerProperty), TemplateContainer(
typeof(TemplateControl))]
        
public ITemplate EmptyDataTemplate
        
{
            
get return emptyDataTemplate; }
            
set { emptyDataTemplate = value; }
        }

        
protected override void OnDataBinding(EventArgs e)
        
{

            
base.OnDataBinding(e);
            
if (emptyDataTemplate != null)
            
{
                
if (this.Items.Count == 0)
                
{
                    EmptyDataTemplate.InstantiateIn(
this);
                }

            }

        }


    }