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>

     

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

  • 相关阅读:
    黑客工具包ShadowBrokers浅析
    浅谈Miller-Rabin素数检测算法
    辗转相除法(欧几里得算法)的证明
    2019年年终感言
    详解矩阵乘法
    计数类问题中的取模运算总结
    浅谈同余方程的求解与中国剩余定理
    模板测试题
    洛谷 P3811 【模板】乘法逆元
    同余知识点全析
  • 原文地址:https://www.cnblogs.com/yukaizhao/p/data_repeater.html
Copyright © 2011-2022 走看看