阿里妈妈,帮你实现网络赚钱梦,流量变成现金!
10-08
25

Repeater自定义模板类

给力技术 - 给您提供最新最全的Web资源
      最近一直在做报表类的东西,在界面上用一些GridView和Repeater来呈现。由于几个报表的样式都不一样,在界面上拖了好几个Repeater,都设置了不同的模板,看着这么多代码我都觉得好乱。像这样的情况,要是有一个通用的repeater控件就好了。在网上搜索了下,只在MSDN上找到一些创建模板类的资料。
      此模板类要实现 ITemplate 接口,MSDN的例子:http://msdn.microsoft.com/zh-cn/library/0e39s2ck%28VS.80%29.aspx
      上面这个例子讲得很详细,我只是参考它做了些改动,让模板类能够实现绑定repeater数据源的所有列,下面是修改过的部分代码
    public void InstantiateIn(System.Web.UI.Control container)
    {
        PlaceHolder ph = new PlaceHolder();
        
        switch (templateType)
        {
            case ListItemType.Header:
                string str = "";
                for (int i = 0; i < Header.Length; i++)
                    str += "<td>" + Header[i] + "</td>";
                ph.Controls.Add(new LiteralControl("<table border=\"0\" cellspacing=\"1\"><tr>" + str + "</tr>"));
                break;
            case ListItemType.Item:  //这里设置数据项
                ph.Controls.Add(new LiteralControl("<tr>"));                
                for (int i = 0; i < Items.Count; i++)
                {
                    Label lblitem = new Label();
                    lblitem.ID = Items[i];

                    ph.Controls.Add(new LiteralControl("<td>"));
                    ph.Controls.Add(lblitem);
                    ph.Controls.Add(new LiteralControl("</td>"));
                }
                ph.Controls.Add(new LiteralControl("</tr>"));

                ph.DataBinding += new EventHandler(Item_DataBinding);
                break;                    
            case ListItemType.Footer:
                ph.Controls.Add(new LiteralControl("</table>"));
                break;
        }
        container.Controls.Add(ph);
    }


      打算把这个类做好一点,起码能实现基本的要求,以后再慢慢修改完善它~~~

      PS: 我的C#交流群--30954402,欢迎加入交流开发经验~~

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
文章标签: asp.net c# 网页 控件
网摘收录:
相关日志:
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 支持Gravatar头像.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.