zoukankan      html  css  js  c++  java
  • 数据源自给自足的Repeater

    要做一个读书频道,在一个页面上面要分别显示权重为60657075809095100的书的列表,而每个列表的显示方式不一样。

     

    初步的解决方案是逐个的写Repeater,后来发现有好多的重复代码。取数据的代码都是重复的。所以决定重构,于是便有个下面的数据源自给自足的Repeater,重写了RepeaterDataSource属性

    public override object DataSource
    {
        
    get
        
    {
            
    if(ConditionType == ConditionType.byWeight)
            
    {
                
    if(TopN == -1)
                    
    return new BookProxy().GetBookByWeight(Weight);

                
    return new BookProxy().GetBookByWeight(Weight,TopN);
            }


            
    return DBProvider.GetBookOrderByClickCount(TopN);
            
        }

        
    set
        
    {
            
    throw new NotImplementedException();
        }

    }

    大家从上面的代码中可以看到用到了一个BookProxy的类来取数据,为什么是Proxy呢,因为这些不同权重的书是在一个页面上显示,如果一个,一个取会开很多个数据库链接,这对性能影响很大,于是我们就引入了BookProxy类让他在程序启动的时候将所有要取的权重的书载入到内存中,程序运行时直接让这个代理类来取得数据。这个类中还需要控制内存中数据什么时候失效的机制,具体的就不多说了。

    这样我们就可以直接在页面上注册这个控件然後使用,不必考虑它取数据的逻辑了。

    <wc:BooksRepeater ID="repeaterHighWeight" Runat="server" Weight="95" TopN="3">
        
    <HeaderTemplate><style="float:left"><img src="img/img_sign2.gif" width="13" height="13" align="absmiddle"/> <span style="font-size:14px">重磅阅读</span></HeaderTemplate>
        
    <ItemTemplate>
        
    <span class="sign"><href='<%#DataBinder.Eval(Container.DataItem,"ID","book.aspx?id={0}")%>'><%#DataBinder.Eval(Container.DataItem,"Name")%></a></span>
        
    </ItemTemplate>
        
    <FooterTemplate></p>
        
    <style="float:right">
        
    <span class="signmore noVisited"><href="categorys.aspx">更多推荐</a></span></p>
        
    <class="clear"></p>
        
    </FooterTemplate>
    </wc:BooksRepeater>

     

    呵呵,是不是简单了不少。

  • 相关阅读:
    基于jquery的弹幕实现
    Cookie在顶级域名、二级域名和三级域名之间共享的情况
    报错:Win10 这台计算机中已经安装了 .NET Framework 4.5.2/4.6.1/4.7.1等等任何版本 或版本更高的更新
    Unity中的Text内容有空格导致换行
    逆波兰表达式
    Java基础03 byte[] 与 16进制字符串之间的转换
    nacos Linux 单机模式配置
    Oracle 常用SQL
    软件安装01 Linux下redis安装
    Java基础04 JSONObject 与范型对象转换
  • 原文地址:https://www.cnblogs.com/yukaizhao/p/data_repeater.html
Copyright © 2011-2022 走看看