A simple paging control pagesize control just support url querystring

本文介绍了一种自定义Web分页控件的实现方法,包括页面导航和每页显示条数选择功能。通过ViewState保存状态,并利用委托进行页面跳转逻辑处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
标题基于SpringBoot的学生学习成果管理平台研究AI更换标题第1章引言介绍研究背景、目的、意义以及论文结构。1.1研究背景与目的阐述学生学习成果管理的重要性及SpringBoot技术的优势。1.2研究意义分析该平台对学生、教师及教育机构的意义。1.3论文方法与结构简要介绍论文的研究方法和整体结构。第2章相关理论与技术概述SpringBoot框架、学习成果管理理论及相关技术。2.1SpringBoot框架简介介绍SpringBoot的基本概念、特点及应用领域。2.2学习成果管理理论基础阐述学习成果管理的核心理论和发展趋势。2.3相关技术分析分析平台开发所涉及的关键技术,如数据库、前端技术等。第3章平台需求分析与设计详细分析平台需求,并设计整体架构及功能模块。3.1需求分析从学生、教师、管理员等角度对平台需求进行深入分析。3.2整体架构设计设计平台的整体架构,包括技术架构和逻辑架构。3.3功能模块设计具体设计平台的核心功能模块,如成果展示、数据分析等。第4章平台实现与测试阐述平台的实现过程,并进行功能测试与性能分析。4.1平台实现详细介绍平台的开发环境、关键代码实现及技术难点解决方案。4.2功能测试对平台各项功能进行全面测试,确保功能正确无误。4.3性能分析分析平台的性能指标,如响应时间、并发处理能力等。第5章平台应用与效果评估探讨平台在实际教学中的应用,并对其效果进行评估。5.1平台应用案例选取典型应用案例,展示平台在实际教学中的使用情况。5.2效果评估方法介绍平台效果评估的具体方法和指标。5.3评估结果分析根据评估数据,对平台的应用效果进行深入分析。第6章结论与展望总结论文的主要研究成果,并指出未来研究方向。6.1研究结论概括性地阐述论文的研究结论和主要贡献。6.2研究展望针对当前研究的不足之处,提出未来改进和扩展的方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值