首页 > 编程 > .NET > 正文

ASP.NET技巧:GridView控件自定义分页详解

2024-07-10 13:09:29
字体:
来源:转载
供稿:网友

  前些天我写了关于 <<在存储过程中实现分页>>和<<gridview控件事件详解 >> ,后来又有一些人问我怎样在gridview中应用这个东东!其实很简单,主要是怎么保存当前页面的页码pageindex问题,不过把这个解决了什么都好办了.因为在分页过程中:pagesize是一定的,我们可以用一个属性来表示.保存pageindex好多中方法,而且数据不是很庞大,基本不会好太多的资源.还是一句老话,话再多都没有例子直观.

  在这里我们将用一个隐藏字段来保存这个pageindex,即当前页码.当点击上一页时,将它的值减一,知道为0,要注意的一点这里的第一页页码是0而不是1.下面看看代码,然后我们再分析分析!
 1<asp:gridview id="newsgrid" runat="server" autogeneratecolumns="false" allowpaging="false" width="100%">
 2            <columns>
 3                <asp:boundfield datafield="newsid" headertext="新闻id"/>
 4                <asp:hyperlinkfield datanavigateurlfields="newsid" datanavigateurlformatstring="~/details.aspx?id={0}"
 5                    datatextfield="title" headertext="新闻标题"  itemstyle-width="70%"/>
 6                <asp:boundfield datafield="posttime" headertext="发布时间"/>
 7                <asp:commandfield headertext="新闻管理" showcancelbutton="false" showdeletebutton="true"
 8                    showeditbutton="true"/>
 9            </columns>
10        </asp:gridview>
11        <div >
12        <asp:hiddenfield id="currentpage" runat="server" value="0"/>
13        <asp:linkbutton id="first" runat="server" commandargument="first" onclick="pagerbutton_click">首 页</asp:linkbutton>
14        <asp:linkbutton id="prev" runat="server" commandargument="prev" onclick="pagerbutton_click">上一页</asp:linkbutton>
15        <asp:linkbutton id="next" runat="server" commandargument="next" onclick="pagerbutton_click">下一页</asp:linkbutton>
16        <asp:linkbutton id="last" runat="server" commandargument="last" onclick="pagerbutton_click">尾 页</asp:linkbutton>
17        </div>  cs文件中的代码:
 1        protected void pagerbutton_click(object sender, eventargs e)
 2        {
 3            int pageindx = convert.toint32(currentpage.value);
 4            int totals = newsmanager.getnews(0, pagesize).totalrecords;
 5            int pages = (totals % pagesize) == 0 ? (totals / pagesize) : (totals / pagesize + 1);
 6            string arg = ((linkbutton)sender).commandargument.tostring().tolower();
 7            switch (arg)
 8            {
 9                case "prev":
10                    if (pageindx > 0)
11                    {
12                        pageindx -= 1;
13                    }
14                    break;
15                case "next":
16                    if (pageindx < pages - 1)
17                    {
18                        pageindx += 1;
19                    }
20                    break;
21                case "last":
22                    pageindx = pages - 1;
23                    break;
24                default:
25                    pageindx = 0;
26                    break;
27            }
28            currentpage.value = pageindx.tostring();
29            newsgrid.datasource = newsmanager.getnews(pageindx , pagesize).entities;
30            newsgrid.databind();
31        } 

  是不是很简单啊,看了代码就都懂了,关于用按钮传参数在这里就不多说了,还有一个就是entities属性,在<<应用实体类entityset实现类似的范型功能 >>这篇文章中可以找到

  • 网站运营seo文章大全
  • 提供全面的站长运营经验及seo技术!
  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表