【转】.net做自定义pagerstyle

10 篇文章 0 订阅

做网页时,经常地我们要做自己的分页控件底部页码部分的样式,但是.net自己的样式太过于单调,也不容易扩展,因些,我们经常要重写pagerstyle,这样也会很麻烦的,但是,我们如果利用.NET分页功能所产生的JS脚本代码,则可以很容易地实现我们想要的效果。下面,我们将利用.net的GRIDVIEW实现一个分页显示效果:


                                                      最终效果图

实现步骤:

1.页面添加一个GRIDVIEW控件,开启分页的功能。

2.可以看到下面有生成的页码效果。


3.下一步,将页码部分隐藏。

在页面加入代码:

<PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Center" CssClass="hideMe" />

样式hideMe代码为:

.hideMe {display:none;}

4.添加自己要定义的底部页码样式,注意要在<asp:GridView 控件代码的外部添加,不要在pagerstyle里面添加,否则,原来自代的分页页码就会丢掉。

<span class="fy_text" style="width:60;">
            <asp:DropDownList ID="selCount" runat="server" OnSelectedIndexChanged="selCountIndexChange" AutoPostBack="True">
              <asp:ListItem Value="5" Text="5条/页"></asp:ListItem>
              <asp:ListItem Value="10" Text="10条/页"></asp:ListItem>
              <asp:ListItem Value="15" Text="15条/页" ></asp:ListItem>
              <asp:ListItem Value="20" Text="20条/页" Selected=True></asp:ListItem>
            </asp:DropDownList>
            </span>
           <span class="fy_text" style="width:60;">
            <select id="SelIndex" name="SelIndex" οnchange="__doPostBack('GridView1',document.form1.SelIndex.value)">
                <%
                    for (int i = 1; i <= GridView1.PageCount; i++)
                    {
                        Response.Write("<option value=\"Page$" + i.ToString() + "\" " + (GridView1.PageIndex+1 == i ? "selected" : "") + ">第 " + i.ToString() + " 页</option>");
                    }
                %>
            </select></span>
            <span class="fy_text" style=" width:96; border:solid 1px #CCCCCC;">共<%=GridView1.Rows.Count%>条 /分<%=GridView1.PageCount%>页</span>
            <%if (GridView1.PageIndex == 0)
              { %>
            <span class="fy_text" style="width:48;border:solid 1px #CCCCCC;"><a href="#" class="syy_on">上一页</a></span>
            <%}
              else
              {
              Response.Write("<span class='fy_text' style='width:48;border:solid 1px #CCCCCC;'><a href=\"javascript:__doPostBack('GridView1','Page$"+ GridView1.PageIndex.ToString()+"')\">上一页</a></span>");

                }
               %>
            <%
                for (int i = 1; i <= GridView1.PageCount; i++)
                {
                    
                    if (i != GridView1.PageIndex + 1)
                        Response.Write("<span class='fy_text' style='width:19; border:solid 1px #CCCCCC;font-family:Arial;'><a href=\"javascript:__doPostBack('GridView1','Page$" + i.ToString() + "')\"> " + i.ToString() + " </a></span>");
                    else
                        Response.Write("<span class='fy_text' style='width:19; border:solid 1px #CCCCCC;font-family:Arial; color:red;'>" + i.ToString() + "</span>");
                } 
            %>
            <%if (GridView1.PageIndex + 1 < GridView1.PageCount)
              { %>
            <span class="fy_text" style="width:48; border:solid 1px #CCCCCC;"><a href="javascript:__doPostBack('GridView1','Page$<% =GridView1.PageCount-1>GridView1.PageIndex?(GridView1.PageIndex+2).ToString():(GridView1.PageIndex+1).ToString() %>')" >下一页</a></span>
            <%}
              else { Response.Write("<span class='fy_text' style='width:48; border:solid 1px #CCCCCC; color:#cccccc'>下一页</span>"); }%>

这样,我们底部页码部分效果就做好了,利用控件分页自动生成的__doPostBack()函数实现页面跳转,十分方便,我们所做的无非就是做一些页码呈现的控制和实现各个控件间的协作功能。十分简单。

关键点:不要改变自带的pagerstyle,将其隐藏,这样就可以利用.net自动生成的doPostBack函数。

附上我的页面代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ManagerNews.aspx.cs" Inherits="Manager_ManagerNews" EnableEventValidation="true"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
     <title>新闻列表</title>
<link href="css/default.css" rel="stylesheet" type="text/css" />
    <script>
        function checkAll(obj)
        {
              var input=document.getElementsByTagName("input");
            for(var i=0;i<input.length;i++)
            {
            if(input[i].type=="checkbox"&&input[i]!=obj)
            {    
                if(input[i].checked==true)
                {
                   input[i].checked=false;
                }
                else if(input[i].checked==false)
                {
                 input[i].checked=true;
                 }
             }
            }
        }
    </script>
    
    <style type="text/css">
       .tr { line-height:21px; height:21px;}
       .hideMe {display:none;}
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div class="news_list">
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin-bottom:15px;">
        <tr>
          <td class="zwln_title" width="110"><a href="NewsAdd.aspx" target="right">== 新增新闻 ==</a> </td>
          <td width="520" class="zwln_title">&nbsp;</td>
          <td width="50" class="zwln_title"><a href="javascript:checkAll(this);">[全选]</a></td>
          <td width="50" class="zwln_title">
              <asp:LinkButton ID="lbtnDelete" runat="server" OnClick="lbtnDelete_Click">[删除]</asp:LinkButton>
             </td>
          <td width="80" class="zwln_title">新闻分类:</td>
          <td width="90" class="zwln_title">
          <asp:DropDownList ID="dropNewsType" runat="server" AutoPostBack="True" OnSelectedIndexChanged="dropNewsType_SelectedIndexChanged">
                                </asp:DropDownList>
          </td>
      </tr>
</table>
    <asp:GridView ID="GridView1" runat="server"
                           CellPadding="4" ForeColor="#333333" GridLines="None" Width="100%"
                            AutoGenerateColumns="False" EmptyDataText="暂时没有新闻" AllowPaging="True" PageSize="20" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowDataBound="GridView1_RowDataBound">
                    
                   
                    <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Center" CssClass="hideMe" />
                    <HeaderStyle CssClass="bt_title"/>
                     <RowStyle BackColor="#EFF3FB" CssClass="bt_title2"/>
                    <AlternatingRowStyle BackColor="White" />
                    <EmptyDataRowStyle HorizontalAlign="Center" ForeColor="#827339" />
                              <Columns>
                                   <asp:TemplateField >
                                  <ItemTemplate>
                                       
                                <input id="chSelect" type="checkbox" runat="server"/>
                                  </ItemTemplate>
                                       <ItemStyle HorizontalAlign="Center" CssClass="bt_title2"/>
                                  </asp:TemplateField>
                                
                                  <asp:TemplateField HeaderText="新闻标题">
                                  <ItemTemplate>
                                   <%#ComDll.GetSubBString(Eval("EditTitle").ToString(), 48)%>
                                  </ItemTemplate>
                                      <ItemStyle HorizontalAlign="Center" CssClass='bt_title3'/>
                                  </asp:TemplateField>
                                  
                                  
                                  <asp:TemplateField HeaderText="权限">
                                  <ItemTemplate>
                                   <%#Eval("ImportSign").ToString()=="0"?"一般":"加密"%>
                                  </ItemTemplate>
                                      <ItemStyle HorizontalAlign="Center" CssClass='bt_title2'/>
                                  </asp:TemplateField>
                                  
                                    <asp:BoundField DataField="classname" HeaderText="分类" >
                                      <ItemStyle HorizontalAlign="Center" CssClass="bt_title2"/>
                                  </asp:BoundField>
                                  <asp:BoundField DataField="SourceName" HeaderText="来源" >
                                      <ItemStyle HorizontalAlign="Center" CssClass="bt_title2"/>
                                  </asp:BoundField>
                                 
                                       <asp:TemplateField HeaderText="信息日期">
                                  <ItemTemplate>
                                     <%#string.IsNullOrEmpty(Eval("DeclareDate").ToString())?"":
                                         Convert.ToDateTime(Eval("DeclareDate")).ToString("yyyy-MM-dd") %>
                                  </ItemTemplate>
                                      <ItemStyle HorizontalAlign="Center" CssClass="bt_title2"/>
                                  </asp:TemplateField>
                                  
                                  <asp:TemplateField HeaderText="操作">
                                  <ItemTemplate>
                                      <a href="Modify.aspx?ID=<%#Eval("ID") %>">修改</a>
                                  </ItemTemplate>
                                      <ItemStyle HorizontalAlign="Center" CssClass="bt_title2"/>
                                  </asp:TemplateField>
                              </Columns>
        <PagerSettings PageButtonCount="1000" />
                </asp:GridView>
            <br />
            <span class="fy_text" style="width:60;">
            <asp:DropDownList ID="selCount" runat="server" OnSelectedIndexChanged="selCountIndexChange" AutoPostBack="True">
              <asp:ListItem Value="5" Text="5条/页"></asp:ListItem>
              <asp:ListItem Value="10" Text="10条/页"></asp:ListItem>
              <asp:ListItem Value="15" Text="15条/页" ></asp:ListItem>
              <asp:ListItem Value="20" Text="20条/页" Selected=True></asp:ListItem>
            </asp:DropDownList>
            </span>
           <span class="fy_text" style="width:60;">
            <select id="SelIndex" name="SelIndex" οnchange="__doPostBack('GridView1',document.form1.SelIndex.value)">
                <%
                    for (int i = 1; i <= GridView1.PageCount; i++)
                    {
                        Response.Write("<option value=\"Page$" + i.ToString() + "\" " + (GridView1.PageIndex+1 == i ? "selected" : "") + ">第 " + i.ToString() + " 页</option>");
                    }
                %>
            </select></span>
            <span class="fy_text" style=" width:96; border:solid 1px #CCCCCC;">共<%=GridView1.Rows.Count%>条 /分<%=GridView1.PageCount%>页</span>
            <%if (GridView1.PageIndex == 0)
              { %>
            <span class="fy_text" style="width:48;border:solid 1px #CCCCCC;"><a href="#" class="syy_on">上一页</a></span>
            <%}
              else
              {
              Response.Write("<span class='fy_text' style='width:48;border:solid 1px #CCCCCC;'><a href=\"javascript:__doPostBack('GridView1','Page$"+ GridView1.PageIndex.ToString()+"')\">上一页</a></span>");

                }
               %>
            <%
                for (int i = 1; i <= GridView1.PageCount; i++)
                {
                    
                    if (i != GridView1.PageIndex + 1)
                        Response.Write("<span class='fy_text' style='width:19; border:solid 1px #CCCCCC;font-family:Arial;'><a href=\"javascript:__doPostBack('GridView1','Page$" + i.ToString() + "')\"> " + i.ToString() + " </a></span>");
                    else
                        Response.Write("<span class='fy_text' style='width:19; border:solid 1px #CCCCCC;font-family:Arial; color:red;'>" + i.ToString() + "</span>");
                } 
            %>
            <%if (GridView1.PageIndex + 1 < GridView1.PageCount)
              { %>
            <span class="fy_text" style="width:48; border:solid 1px #CCCCCC;"><a href="javascript:__doPostBack('GridView1','Page$<% =GridView1.PageCount-1>GridView1.PageIndex?(GridView1.PageIndex+2).ToString():(GridView1.PageIndex+1).ToString() %>')" >下一页</a></span>
            <%}
              else { Response.Write("<span class='fy_text' style='width:48; border:solid 1px #CCCCCC; color:#cccccc'>下一页</span>"); }%>
</div>
    </form>
</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值