请教大神!我想使用复杂的swiper改变分页器位置,位置是打乱的,用asp.net如何实现,如果只是简单的用控件的话,

asp.net:使用aspnetpager分页控件,运行代码后只有1,2分页_百度知道
asp.net:使用aspnetpager分页控件,运行代码后只有1,2分页
&nbsp. & & & getbind().apUserP &apUserPage&currentPageNumber& &/zhidao/wh%3D600%2C800/sign=c6ecda94a38b87d8d1ed21b0ef46e25f0fbdfc451da80cb3e41, EventArgs e)&nbsp:& & &//当前页号 & &nbsp,实例化&server& &nbsp,但aspnetpager分页控件只显示1和2分页; & currentPageNumber = 1; &Center& & & & & private void getbind()&nbsp,pageSize); {//控件事件&nbsp,能正常显示后台代码:AspNetPager& Width=& }& &nbsp.gviUserL &nbsp。每页显示2条; PageIndexBoxType=&quot. && &nbsp.hiphotos. }& & currentPageNumber = C &nbsp.apUserP& &数据显示用的是& &//每页显示记录条数 &UsersManager um = new UsersManager(); && &nbsp.apUserP runat=& & protected void apUserPage_PageChanged( & & & &//得出总的记录条数&nbsp, EventArgs e)& &nbsp,求大神指教前台代码;currentPageNumber& & & & HorizontalAlign=& & &/zhidao/pic/item/a5c27d1ed21b0ef46e25f0fbdfc451da80cb3e41; int pageSize = 3.DataBind();& & & &//用的三层结构; ViewState[& & protected void Page_Load(& &nbsp.DataSource = um:这是分页控件& & && &nbsp.jpg" />数据一共有20条; & &//数据绑定& {&/ & & & & & & &nbsp.hiphotos.CurrentPageI & & &nbsp,那实际上就有10个分页; & & &//保存当前页&nbsp.ToInt32(ViewState[& & {&&nbsp
其他类似问题
为您推荐:
其他3条回答
&5&/DropDownList&apUserPage&& 在aspnetpager分页控制中加上 NumericButtonCount=&quot,表示显示1--5个分页页码; Width=&quot&server&Center& 这个属性; runat=&quot:AspNetPager&5& PageIndexBoxType=& HorizontalAlign=& NumericButtonCount=&100%&quot:AspNetPager ID=&quot
我这里有个简单的例子,你可以看一下
inu是哪个国家代码
aspnetpager的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁ASP.NET中的分页剖析(一)
“民生科技”提醒您:
ASP.NET中的分页剖析(一)
ASP.NET中的分页剖析-基于SQL语句的分页和基于PagedDataSource的分页&&& 在ASP.NET中,要对数据进行分页无外乎有两种形式,一种是使用控件的内置分页功能进行分页,再一种就是使用自定义方式进行分页。自定义分页又可以分为两种方式,一种是基于SQL语句的分页,另一种是基于ASP.NET提供的PagedDataSource分页类进行分页。&&& 使用控件的内置功能进行分页,也就是控件本身给提供了分页功能,我们直接启用分页即可,进行相关的一些简单设置即可完成分页,譬如GridView控件就提供了内置的分页功能。使用自定义方式进行分页,主要分为基于SQL语句的分页和基于ASP.NET提供的PagedDataSource分页类进行分页,譬如DataList和Repeater控件就没有提供内置的分页功能,如果需要对它们进行分页就需要用这种方式了。下面简单分析下它们的优缺点:基于SQL语句的分页方式每次返回数据量较少(仅返回当前页面所需数据),适合于大数据量(百万行数据量级)的数据进行分页,只是代码编写比较复杂,后面再进行详细介绍编码。ASP.NET提供的PagedDataSource分页类使用比较方便,封装了分页常规的属性,但由于一次将所有的数据读入,比较占用资源,一般适合数据量较少(一般不超过一万行),并且数据库服务器和Web服务器之间带宽不是瓶颈时使用(同一台计算机上不会有带宽问题)。ASP.NET提供的PagedDataSource分页类和控件提供的内置分页功能实现机理是一致的,当点击页面时,每次数据都会全部读入,这样,当数据量大时,效率较低,这时就应该使用基于SQL语句的自定义分页方式。&&& 由于分页功能的使用频率较高,为了提高代码的复用效果,后面把分页做成用户控件供以后方便使用,这里主要是基于SQL语句的这种分页去做的,全靠手工方式去实现分页效果。在用户使用的过程中,由于翻页功能使用的频率也很高,所以这里再把基于SQL语句的分页实现使用存储过程的方式实现,使之效率更高。下面先简单介绍一下这两种分页方式。&&& 一、基于SQL语句的分页---一般使用存储过程实现。它通过编写SQL查询,对数据进行筛选,仅返回当前页面所需的内容数据。要进行分页,首先必须要知道每页显示多少条(PageSize)、要显示第几页(CurrentPageIndex)。这是我们分页的前提内容。现在假设如果查询得到的结果集是有编号的,那我们可以很方便地计算得到所需的内容,比如我们要以每页10条记录显示第三页的数据,就可以直接查询编号为21~30之间的所有记录就行了。不过很可惜,SQL语句并没有结果编号的功能,但是我们可以使用Top语句和子查询,所以我们可以首先依据排序条件查询前20条记录,然后查询不包含前20条记录的部分中的前10条的记录。根据这个思路,我们可以编写SQL语句如下所示:select top PageSize * from 表 where 条件 and id not in (select top PageSize * (CurrentPageIndex - 1) id from 表 where 条件 order by 排序条件_ABC) order by 排序条件_ABCselect top 10 * from 表 where id not in (select top 20 id from 表 order by 排序条件_ABC) order by 排序条件_ABC有了它,我们就可以为每个分页的查询编写相对应的查询语句了。这里要强调的是:使用Top语句获取记录时必须要进行排序,要不然SQL系统会给我们随机的获取数据的,并不是我们要的排序的结果,还有In子句中的Order By排序不会对影响主句,所以还需要在主句中也要进行Order By进行排序,反之亦然。&&& 事实上,在SQL Server 2005及以后的版本中,增加了一种新的函数ROW_NUMBER()可以返回行号,所以可以使用如下的查询方式返回同样的结果。select * from (select ROW_NUMBER() OVER(ORDER BY 排序条件_ABC) as LineNO, * from 表) as Rank where LineNO between 21 and 30 order by 排序条件_ABC&&& 下面再说下基于PagedDataSource类的分页。&&& 二、基于PagedDataSource类的分页---刚才我们了解了基于SQL语句的分页,事实上,我们有更为简便通用的方法,那就是可以使用分页类PagedDataSource。该类封装了数据绑定控件与分页相关的属性,常用的属性见下表:属& 性说& 明CurrentPageIndex当前页PageCount总页数Count总记录数PageSize每页记录数DataSource数据源AllowPaging控件是否实现自动分页功能只要将数据源和当前页码赋值给PagedDataSource类的实例对象,其他属性(总记录数和总页数)可以自动计算得出。可以编写绑定的方法如下:private void MyDataBind(){&&& PagedDataSource pdsBooks = new PagedDataSource();&&& //对PagedDataSource 对象的相关属性赋值&&&&&&& &&& pdsBooks.DataSource = BookManager.GetOrderedSmallBooksByCategoryId(Convert.ToInt32(ViewState[&typeid&]), (string)ViewState[&Order&]);&&& pdsBooks.AllowPaging = true;&&& pdsBooks.PageSize = 4;&&& pdsBooks.CurrentPageIndex = P&&& lblCurrentPage.Text = &第 & + (pdsBooks.CurrentPageIndex + 1).ToString() + & 页 共 & + pdsBooks.PageCount.ToString()+& 页&;&&& SetEnable(pdsBooks);&&&&&&&&&&& //把PagedDataSource 对象赋给DataList控件&&& dlBooks.DataSource = pdsB&&& dlBooks.DataBind();}&从上面的代码可以看出,使用PagedDataSource分页类的使用过程是:1)指定PagedDataSource实例对象的数据源为GetOrderedSmallBooksByCategoryId返回的数据集合;2)分别设置允许分页(AllowPaging)、页大小(PageSize)、当前页(CurrentPageIndex)的属性;3)指定数据显示控件的数据源为该实例对象,并绑定。&关于页面信息保持问题:现在就可以编写方法实现分页和排序了。不过还需要进行状态保持,当前页数和排序条件需要进行状态保持。因为该分页和排序信息仅需要在该页面有效,所以使用Session、Cookie、Application的状态保持方式并不合适。可以使用一个页面级的状态保持方式:ViewState。使用页面级状态保持的好处就是不影响其他页面的分页。使用语法:ViewState[“名称”]=值事实上,ViewState状态保持的方式是在页面上放置一个隐藏域:&input type=”hidden” name=”__VIEWSTATE” value=””&每次数据回传,该隐藏域的内容也一起回传,从而进行状态信息的保持。
上一篇文章:&关键词:C#,aspx,ASP.NET,MVC,初识&发布日期: 12:17:58下一篇文章:&关键词:C#,ASPX,ASP,.NET中,分页,自定义&发布日期: 12:20:14
相关文章:&关键词:C#,ASPX,ASP,.NET中,分页,自定义&发布日期: 12:22&关键词:C#,ASPX,ASP,.NET中,分页,自定义&发布日期: 12:23&关键词:C#,ASPX,ASP,.NET中,分页,自定义&发布日期: 12:24
相关目录:,,当前位置: →
→ ASP.NET关于url分页的疑问解决思路
ASP.NET关于url分页的疑问解决思路
& 作者:佚名 & 来源: 互联网 & 热度:
&收藏到→_→:
摘要: ASP.NET 关于url分页的疑问实现url分页格式如:http://localhost/userlist.aspx?page=2疑问:如何存储查询语句????????...
"ASP.NET关于url分页的疑问解决思路"::
asp.net 关于url分页的疑问实现url分页格式如:http://localhost/userlist.aspx?page=2疑问:如何存储查询语句????????protected void page_load(object sender, eventargs e){ &
if (!ispostback) &
string sql = &select * from users&; //一般在这里初始化查询语句 &
使用url分页后,切换页码时,页面的if(!ispostback)总是成立,带条件查询的sql语句(如搜索数据后的sql语句)就会被重置为&select * from users&; ,而不是条件查询后的sql语句。 &
如果使用session保持sql语句,如果session不失效的话,关闭页面、重新打开后,页面还是保留了上次搜索的数据,默认应该是全部数据select * from users。问:如何解决以上问题------解决方案--------------------在!ispostback里面加一个判断if(request.querystring[&page&]!=null){
你的分页代码}else{string sql = &select * from users&; //一般在这里初始化查询语句}
------解决方案--------------------刚刚的帖子
------解决方案--------------------探讨引用:在!ispostback里面加一个判断if(request.querystring[&page&]!=null){你的分页代码}else{string sql = &select * from users&; //一般在这里初始化查询语句}if 成立,sql=null 下面带sql参数的方法不是出错了。。。
------解决方案--------------------
当然,重新get方式访问一个页面,那么只有url可以传参数了,原来的状态也全都丢失了。你的页面上只此文来自: 马开东博客
转载请注明出处 网址:
有一个简单的数据列表吗?那么你的页面实在是太简单了。实际上好的,页面上不仅仅只有数据列表,还有许多其它的组件,所有的东西都需要保存用户操作过程中的状态。如果你选择重新定向到新的页面(而不是asp.net回发以及维系viewstate的机制),那么你就要自己处理这些状态丢失的全部问题。如果追逐比较流行的编程,那么就可以完全使用ajax来处理交互,而从来不回发。否则,你就使用asp.net传统web form机制来编程。至于session集合,我要提醒你的是这是会话范畴的,而不是页面范畴的。会话和页面相信你可以分的清楚。如果你在仅仅需要控制页面范畴的数据时,使用了大的范畴,那么很快等你做复杂一点的程序就会遇到很多数据混乱情况。 搜索此文相关文章:关于url分页的疑问解决思路此文来自: 马开东博客
网址: 站长QQ
上一篇:没有了
ASP.NET关于url分页的疑问解决思路_ASP.NET技术相关文章
ASP.NET技术_总排行榜
ASP.NET技术_最新
ASP.NET技术_月排行榜
ASP.NET技术_周排行榜
ASP.NET技术_日排行榜我们自己写的分页控件; 配合之前的“分页,直接通过SQL取分页数据”来实现分页,觉得不错,轻便,效率也高,与大家分享一下: 基本思路是,计算页码—&拼装HTML,需要传入一个“preURL”参数,即页码前的完整URL,在拼装最后各页的链接时使用。 具体代码如下: public static string GetPageInfo(string preUrl, int p, int size, int total)
#region//计算页码
int tp = total % size == 0 ? total / size : total / size + 1;//总页码
int start = p - 4;//开始页码
if (start & 1)
start = 1;
int end = start + 10;//结束页码
if (end & tp)
#endregion
#region//组装
StringBuilder r = new StringBuilder();
r = new StringBuilder("&div class=\"pagination\"&&ul&");
r.Append(string.Format("&li class=\"active\"&&a&每页{2}条/共 &span style=\"color:red\"&{0}&/span& 条,当前第 &span style=\"color:red\"&{3}&/span& 页/共{1}页&/a&&/li&", total.ToString(), tp.ToString(), size.ToString(), p.ToString()));
if (p & 1)
r.Append(string.Format("&li&&a href=\"{0}&p={1}\"&前一页&/a&&/li&", preUrl, (p - 1).ToString()));
for (int i = i &= i++)
if (i == p)
r.Append(string.Format("&li class=\"active\"&&a href=\"{0}&p={1}\"&{1}&/a&&/li&", preUrl, i.ToString()));
r.Append(string.Format("&li&&a href=\"{0}&p={1}\"&{1}&/a&&/li&", preUrl, i.ToString()));
if (p & end)
r.Append(string.Format("&li&&a href=\"{0}&p={1}\"&下一页&/a&&/li&", preUrl, (p + 1).ToString()));
if (tp & end)
r.Append(string.Format("&li&&a href=\"{0}&p={1}\"&尾页&/a&&/li&", preUrl, (tp).ToString()));
r.Append("&/ul&&/div&");
return r.ToString();
#endregion
}&然后前端再通过,服务器控件的”.InnerHtml”属性,构建完整的分页。这里的样式是用Bootstrap前端框架。最后的效果,可以看这里:哪里体检这篇博客中我讲到了ASP.net&WebForm由于一些先天的“诱导犯罪”的缺陷,现在用ASP.net&MVC的公司越来越多。但是根据填写了&
&调查表的统计,我们发现有一大半的人还没有使用过ASP.Net&MVC,而没用过ASP.net&MVC的人中竟然有很多人人是因为感觉ASP.Net&难、没时间学。调查表分析数据如下:
初看ASP.net确实难:复杂的路由机制、&ViewData/ViewBag/TempData、过滤器、Razor、Layout、XXXHelper、验证、WebAPI、依赖注入、单元测试……光看这一对概念头就晕了,“还是拖控件简单”。
其实学习一个新的框架,只要搞清他的原理就会“豁然开朗”,再看其他的东西就不会感觉恐惧了。
这篇文章我将会带着大家搞明白什么叫MVC模式,并且带着大家用大家熟悉的Asp.Net&WebForm实现MVC!
对!你没听错!
用Asp.Net&WebForm实现MVC!
再次感受一下ASP.net WebForm吧。
假设有一个Person对象的集合,我们要在网页中以html渲染,那么要如下编写
&asp:Repeater ID=&Repeater1& runat=&server&&
&ItemTemplate&&tr&&td&&%#Eval(&Name&) %&&/td&&td&&%#Eval(&Age&) %&&/td&&/tr&&/ItemTemplate&
&/asp:Repeater&
if(!IsPostBack)
List&Person& list = new List&Person&();
list.Add(new Person { Name = &rupeng&, Age = 8 });
list.Add(new Person { Name = &qq&, Age = 18 });
Repeater1.DataSource =
Repeater1.DataBind();
这样做的缺点是C#代码中访问了apsx中的控件Repeater1,也就是在aspx中必须要有一个Repeater类型、Id为Repeater1的控件,这样aspx就和C#代码耦合在了一起。麻烦在哪儿呢?
1)如果aspx有两个地方都要用list了,那么就要写两组DataSource=DataBind();
2)如果aspx中突然不想要Repeater了,把Repeater1删掉C#代码就会报错
3)Aspx中忽然不想用Repeater进行数据的显示了,想换别的控件,那么C#代码也要改
再比如,在ASP.Net&WebForm中,实现加法计算器会如下实现:
&asp:TextBox ID=&TextBox1& runat=&server&&&/asp:TextBox&
+&asp:TextBox ID=&TextBox2& runat=&server&&&/asp:TextBox&
&asp:Button ID=&Button1& runat=&server& OnClick=&Button1_Click& Text=&=& /&
&asp:TextBox ID=&TextBox3& runat=&server&&&/asp:TextBox&
protected void Button1_Click(object sender, EventArgs e)
int i1 = Convert.ToInt32(TextBox1.Text);
int i2 = Convert.ToInt32(TextBox2.Text);
int i3 = i1 + i2;
TextBox3.Text = i3.ToString();
后台的C#代码和aspx的耦合要求aspx视图中必须有三个名字各为TextBox1、TextBox2、TextBox3的TextBox类型的服务器控件。如果我想把计算的结果从TextBox改成span就不行。前端设计人员看到TextBox绝对没有input亲切,前端人员对input&的把控能力会被TextBox更好。另外不必再说WebForm引入的ViewState、页面生命周期、ClientID等令人作呕的问题。
有同学会说了:你有病吗,开发时候aspx怎么可能总是变来变去,即使aspx变了,你C#代码也就变呗,有什么大不了的?
如果说系统小的话可能无所谓, 对于比较复杂的系统,如果aspx和C#这样紧密的耦合,维护还会特别麻烦。而且如果实现像一些CMS系统那样可以动态修改模板文件的话就是存在着“C#无法预测、无法强制要求aspx到底怎么写”的问题。
这还仅仅是展示一个集合的问题,如果要展示复杂的扁平化数据或者需要从用户输入中获取数据,用这种方式更灾难。
那么MVC思想怎么解决呢?逻辑代码(Controller)不直接和页面视图(View)进行交互,他们之间用Model(数据模型)作为沟通的通道。当需要展示数据的时候由Controller收集到数据(Model),然后把数据交给View去展示;当Controller需要读取View中用户输入内容的时候,框架会把View中的数据映射到Model中,然后Controller读取Model中的数据进行后续的逻辑处理。这样就把逻辑代码(俗称C#代码)和视图(俗称页面)进行解耦了。
光说概念没用,还是先看代码把。下面使用MVC模式改造的“显示Person集合”:
View视图PersonsView.aspx
Language=&C#&%&
&%@ Import Namespace=&System.Collections.Generic& %&
&%@ Import Namespace=&WebApplication1& %&
&html xmlns=&http://www.w3.org/1999/xhtml&&
&meta http-equiv=&Content-Type& content=&text/ charset=utf-8&/&
var persons = (List&Person&)Context.Items[&persons&];
foreach(var person in persons)
&tr&&td&&%=person.Name %&&/td&&td&&%=person.Age %&&/td&&/tr&
注意,我把aspx相关的两个自动生成的.cs文件删掉了,并且把&%@Page%&标签的AutoEventWireup、CodeBehind、Inherits等几个属性也都干掉了,这样aspx就变成了一个纯粹的“模板引擎”
作为Controller的Index.ashx的代码如下:
public void ProcessRequest(HttpContext context)
List&Person& list = new List&Person&();
list.Add(new Person { Name=&rupeng&,Age=8});
list.Add(new Person { Name = &qq&, Age = 18 });
context.Items[&persons&] =
context.Server.Transfer(&PersonsView.aspx&);
这里借鉴了JSP中“request.getRequestDispatcher(&index.jsp&).forward(request,response)”一样的思路。
context.Server.Transfer是在服务器内部把请求处理权转交给&PersonsView.aspx&处理。HttpContext中的Items的生命周期是整个请求响应,这样我们在一般处理程序中把数据放到context.Items中,然后在&PersonsView.aspx&中就可以可以通过Context.Items[&persons&]拿到这个数据从而进行数据的展示。
为什么把数据放到HttpContext.Items中呢。由于Transfer仅仅是服务器内部处理权的转接,但是仍然是在一个请求中的,所以放到Context.items是最好的。如果放到Session、Application等中会有并发的问题。
这样Controller(一般处理程序)和View(aspx)之间只要维持一个“要传递一个名字为persons类型的List&Person&”这样一个弱耦合关系即可,至于aspx用不用这个persons、用几次persons、怎么用persons,你Controller都不用管。
按照同样方法改造加法计算器
下面是视图AddView.aspx的代码
&%@ Page Language=&C#&%&
&!DOCTYPE html&
&html xmlns=&http://www.w3.org/1999/xhtml&&
&%dynamic viewBag = Context.Items[&ViewBag&]; %&
&meta http-equiv=&Content-Type& content=&text/ charset=utf-8&/&
&title&加法计算器&/title&
&form id=&form1&&
&input type=&hidden& name=&action& value=&addSubmit& /&
&input type=&text& name=&i1& value=&&%=viewBag.i1 %&& /&+&input type=&text& name=&i2& value=&&%=viewBag.i2%&& /&
&input type=&submit& value=&=& /&&input type=&text& value=&&%=viewBag.i3 %&& /&
而AddHandler.ashx的主体代码如下:
public void ProcessRequest(HttpContext context)
string action = context.Request[&action&];
dynamic viewBag = new System.Dynamic.ExpandoObject();
if(string.IsNullOrEmpty(action))
viewBag.i1 = &&;
viewBag.i2 = &&;
viewBag.i3 = &&;
else if(action==&addSubmit&)
int i1 = Convert.ToInt32(context.Request[&i1&]);
int i2 = Convert.ToInt32(context.Request[&i2&]);
int i3 = i1 + i2;
viewBag.i1 = i1;
viewBag.i2 = i2;
viewBag.i3 = i3;
context.Items[&ViewBag&] = viewB
context.Server.Transfer(&AddView.aspx&);
由于View和Controller之间传递的数据比较复杂、比较多,为了简化开发,这样用了dynamic&动态类型。熟悉ASP.Net&MVC的同学是不是感觉这个和ASP.net&MVC中的ViewBag异曲同工呢。
在这个加法计算器中 如果我想把结算结果用span显示,那么只要把&input&type=&text&&name=&i2&&value=&&%=viewBag.i2%&&&/&改成&span&&%=viewBag.i2%&&/span&就可以了 。美工也容易介入页面美化。
如果我想把页面的Title从“加法计算器”改成“3和5相加的结果”,那么只要这样改就可以:&title&&%=viewBag.i1&%&和&%=viewBag.i2&%&相加的结果&/title&&&&&这样model里的数据我aspx想用几次用几次,想怎么用就怎么用。 有没有感觉到和WebForm不一样的地方呢?
所以只要思想想通了,其实实现MVC模式不一定要用ASP.net&MVC,我见过很多项目都是自己搞的MVC机制。
当然既然ASP.net&MVC已经这么优秀了,一般情况没必要像我这样重新自己发明一个轮子用。这里给大家讲ASPX实现MVC只是用大家熟悉的东西让大家明白原理,工程项目应用还是用ASP.Net&MVC吧。

我要回帖

更多关于 swiper改变分页器位置 的文章

 

随机推荐