zoukankan      html  css  js  c++  java
  • A simple paging control pagesize control just support url querystring

    paging control code
      1 [ToolboxData("<{0}:Paging runat=server></{0}:Paging>")]
      2    public class Paging : WebControl
      3    {
      4        public int Records
      5        {
      6            get
      7            {
      8                object o = this.ViewState["Records"];
      9                if (o == null)
     10                {
     11                    return 1;
     12                }

     13                else
     14                {
     15                    return (int)o;
     16                }

     17            }

     18            set
     19            {
     20                this.ViewState["Records"= value;
     21            }

     22        }

     23
     24        public int PageSize
     25        {
     26            get
     27            {
     28                object o = this.ViewState["PageSize"];
     29                if (o == null)
     30                {
     31                    return 1;
     32                }

     33                else
     34                {
     35                    return (int)o;
     36                }

     37            }

     38            set
     39            {
     40
     41                this.ViewState["PageSize"= value;
     42            }

     43        }

     44
     45       
     46        public int ToPage
     47        {
     48            get
     49            {
     50                if (DesignMode)
     51                {
     52                    return 1;
     53                }

     54                string s = Page.Request[PageName];
     55                if (s == null)
     56                {
     57                    return 1;
     58                }

     59                else
     60                {
     61                    return int.Parse(s);
     62                }

     63            }

     64        }

     65
     66        public int PageCount;
     67
     68        public string PageName = "Topage";
     69
     70        
     71        protected override void RenderContents(HtmlTextWriter output)
     72        {
     73            Build(output,CalculatePageCount);
     74        }

     75
     76        private int CalculatePageCount(int records,int pageSize)
     77        {
     78            int mod = records % pageSize;
     79            if (mod > 0)
     80            {
     81                return (records / pageSize + 1);
     82            }

     83            else
     84            {
     85                return (records / pageSize);
     86            }

     87        }

     88
     89        public delegate int CalculatePageCountHandel(int records, int pageSize);
     90
     91        private void Build(HtmlTextWriter output,CalculatePageCountHandel kk)
     92        {
     93            PageCount = kk(Records,PageSize);
     94            string prev = "";
     95            string next = "";
     96            
     97            if (ToPage == 1)
     98            {
     99                prev = "prev ";
    100            }

    101            else
    102            {
    103                prev = string.Format("<a href=\"{0}\">prev</a> ", GetUrl(ToPage - 1));
    104            }

    105            if (ToPage >= PageCount)
    106            {
    107                next = "next";
    108            }

    109            else
    110            {
    111                next = string.Format("<a href=\"{0}\">next</a> ", GetUrl(ToPage + 1));
    112            }

    113            string temp = "";
    114            int previousPagesCount = 3;
    115            for (int i = ToPage - previousPagesCount; i < ToPage; i++)
    116            {
    117                if (i > 0)
    118                {
    119                    temp += string.Format("<a href=\"{0}\">{1}</a> ", GetUrl(i), i);
    120                }

    121            }

    122            temp += string.Format("<a href=\"{0}\" class=\"selected\">{1}</a> ", GetUrl(ToPage), ToPage);
    123            int nextPagesCount = 3;
    124            for (int i = ToPage + 1; i <= PageCount && i <= ToPage + nextPagesCount; i++)
    125            {
    126
    127                temp += string.Format("<a href=\"{0}\">{1}</a> ", GetUrl(i), i);
    128            }

    129            if (ToPage + 1 + 4 < PageCount)
    130            {
    131                temp += " ";
    132            }

    133            temp = "<span>" +prev + temp + next+"</span>";
    134
    135
    136            output.Write(temp);
    137        }

    138        public NameValueCollection ExtendProperty;
    139        private string GetUrl(int number)
    140        {
    141            if (this.DesignMode)
    142            {
    143                return string.Empty;
    144            }

    145            NameValueCollection list = new NameValueCollection(Page.Request.QueryString);
    146            if (list[PageName] == null)
    147            {
    148                list.Add(PageName, number.ToString());
    149            }

    150            else
    151            {
    152                list[PageName] = number.ToString();
    153            }

    154            string key;
    155            if (ExtendProperty != null)
    156            {
    157                for (int i = 0; i < ExtendProperty.Count; i++)
    158                {
    159                    key = ExtendProperty.Keys[i];
    160                    if (list[key] == null)
    161                    {
    162                        list.Add(key, ExtendProperty[key]);
    163                    }

    164                    else
    165                    {
    166                        list[key] = ExtendProperty[key];
    167                    }

    168                }

    169            }

    170            string url = Page.Request.Path+"?";
    171            for (int i = 0; i < list.Count; i++)
    172            {
    173                url +=  list.Keys[i] + "=" +HttpUtility.UrlEncode(list[i]);
    174                if (i != list.Count - 1)
    175                {
    176                    url += "&";
    177                }

    178            }

    179            return url;
    180            
    181        }

    182    }

    pageSize control
     [ToolboxData("<{0}:PagesizeControl runat=server></{0}:PagesizeControl>")]
        
    public class PagesizeControl : WebControl
        
    {
            
    private delegate string PagesizeHtmlHandle(int[] list, int current,GetItemHtmlHandle itemHandle);
            
    private delegate string GetItemHtmlHandle(int value, int current);
            
    protected override void RenderContents(HtmlTextWriter output)
            
    {
                Build(output,GetHtml,GetItemHtml);
            }


            
    public int Current
            
    {
                
    get
                
    {
                    
    if (DesignMode)
                    
    {
                        
    return 50;
                    }

                    
    string s = Page.Request[Name];
                    
    if (s == null)
                    
    {
                        
    return 50;
                    }

                    
    else
                    
    {
                        
    return int.Parse(s);
                    }

                }

            }


            
    private const string Name = "pagesize";

            
    private void Build(HtmlTextWriter output,PagesizeHtmlHandle handle,GetItemHtmlHandle itemHandle)
            
    {
                
    int[] list = new int[] {20,50,100};
               
                output.Write(handle(list,Current,itemHandle));  
            }


            
    private string GetHtml(int[] list, int current,GetItemHtmlHandle itemHandle)
            
    {
                
    string temp = "<span>show ";
                
    for (int i = 0; i < list.Length; i++)
                
    {
                    temp 
    += itemHandle(list[i], current);
                }

                temp 
    += "results</span>";
                
    return temp;
            }

            
    public NameValueCollection ExtendProperty;
            
    private string GetItemHtml(int value, int current)
            
    {
                
    if (DesignMode)
                
    {
                    
    return value.ToString() +" ";
                }

                NameValueCollection list 
    = new NameValueCollection(Page.Request.QueryString);
                
    if (list[Name] == null)
                
    {
                    list.Add(Name, value.ToString());
                }

                
    else
                
    {
                    list[Name] 
    = value.ToString();
                }

                
    string key;
                
    if (ExtendProperty != null)
                
    {
                    
    for (int i = 0; i < ExtendProperty.Count; i++)
                    
    {
                        key 
    = ExtendProperty.Keys[i];
                        
    if (list[key] == null)
                        
    {
                            list.Add(key, ExtendProperty[key]);
                        }

                        
    else
                        
    {
                            list[key] 
    = ExtendProperty[key];
                        }

                    }

                }

                
    string temp;
                
    if (value == current)
                
    {
                    temp 
    = "<a href=\"{0}\" class=\"selected\">{1}</a> ";
                }

                
    else
                
    {
                    temp 
    = "<a href=\"{0}\">{1}</a> ";
                }


                
    string url = Page.Request.Path + "?";
                
                
    for (int i = 0; i < list.Count; i++)
                
    {
                    url 
    += list.Keys[i] + "=" + HttpUtility.UrlEncode(list[i]);
                    
    if (i != list.Count - 1)
                    
    {
                        url 
    += "&";
                    }

                }

                
    return string.Format(temp, url, value);
            }

        }

    On Make url function , You can replace some code
  • 相关阅读:
    基础数据补充
    购物车
    小数据池、深浅拷贝和集合
    列表、元组和range
    小数据池、深浅拷贝和集合练习
    字典
    字符串练习
    列表练习
    练习
    字典练习
  • 原文地址:https://www.cnblogs.com/lovebanyi/p/1186346.html
Copyright © 2011-2022 走看看