datagrid分页


html代码:
   <table border="0" cellpadding="0" cellspacing="0" style="width: 600px; font-size: 9pt; line-height: 20pt;">
                                <tr>
                                    <td style="width: 300px; height: 4px" align="center">
                                        一共<asp:Label ID="lblallcount" runat="server" Text='Label12'><%=lblallcount3%

></asp:Label>记录共<asp:Label
                                            ID="lblpagecount" runat="server" Text="Label"><%=lblpagecount3%></asp:Label>页 第

<asp:Label ID="lblcurrentindex"
                                                runat="server" Text="Label"><%= lblcurrentindex3%></asp:Label>页</td>
                                            <td style="width: 450px; height: 4px" align="center"><asp:LinkButton ID="first"

runat="server" CommandArgument="first" OnClick="btnClick">first</asp:LinkButton>
                                        <asp:LinkButton ID="prev" runat="server" CommandArgument="prev"

OnClick="btnClick">prev</asp:LinkButton>
                                        <asp:LinkButton ID="next" runat="server" CommandArgument="next"

OnClick="btnClick">next</asp:LinkButton>
                                       <asp:LinkButton ID="last" runat="server" CommandArgument="last"

OnClick="btnClick">last</asp:LinkButton>
                                        跳转至第<asp:TextBox
                                            ID="to" runat="server" Columns="1" Width="20px"></asp:TextBox>
                                        页<asp:Button ID="go" runat="server" Text="go" Width="27px" OnClick="goClick" /></td>
                                </tr>
                            </table>
                       

 

 

 

cs代码:

 public int lblallcount3, lblpagecount3, lblcurrentindex3;
  first.Text = "最前页";
        prev.Text = "前一页";
        next.Text = "下一页";
        last.Text = "最后一页";


  #region  用于显示分页的总记录条数及当前页
    protected  void showstate()
    {

       
        Page_size.Page_sum(s_Mzb, out lblallcount3, out lblpagecount3, out lblcurrentindex3, M_Gr);
//s_Mab为sql语句,M_Gr为datagrid的名称,其的三个函数,为前边定义的变量,在这儿调用了
   }


    #endregion


  #region 用于上一页,下一页
    protected void btnClick(object sender, EventArgs e)
    {

   string arg = ((LinkButton)sender).CommandArgument;//获取与其的事件参数

        Page_size.switch_page(arg,M_Gr);
            
          Mzb_DataBind();//这是一个函数(在这儿没有写),用于显示分页的内容,在这里重新绑定一次

          showstate();//重新绑定上边的分页

      }

    #endregion


      #region //用于分页的转向

      protected void goClick(object sender, EventArgs e)
    {

        string s_text_name = to.Text.ToString();

        if (Page_size.IsNumber(s_text_name))//IsNumber类用于转换成数字
        {

            Page_size.go_to(to, M_Gr);
            to.Focus();
       
        }
        else

        {
            Jscript.Alert("您的输入有误,请重新输入");
          
        }
   
          Mzb_DataBind();//这是一个函数(在这儿没有写),用于显示分页的内容,在这里重新绑定一次

          showstate();//重新绑定上边的分页

    }
          #endregion


//以下是用到的类
#region 用于获取页数

    public static void Page_sum(string s_sql, out int lblallcount, out int lblpagecount1, out int lblcurrentindex1, DataGrid Gr)

{
    SqlConnection mycon=new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["Str_sql"].ToString());
    mycon.Open();

    SqlDataAdapter mypter = new SqlDataAdapter(s_sql,mycon);
    DataSet ds = new DataSet();
    mypter.Fill(ds,"member_page");
    DataTable dt = ds.Tables["member_page"];
    int count = dt.Rows.Count;
    lblallcount = Convert.ToInt32(count.ToString());//获得总条数;
      lblpagecount1=Convert.ToInt32(Gr.PageCount.ToString());//获取总页数
      lblcurrentindex1 = Convert.ToInt32(Gr.CurrentPageIndex + 1);//获取当前页的索引;
     
      ds.Dispose();
      mycon.Close();
  }

    #endregion

 #region 用于上一页,下一页,首页,尾页
  public static void  switch_page(string s_arg,DataGrid Gr)
{
    switch (s_arg)
    {
   
        case("first"):
            Gr.CurrentPageIndex = 0;//获取当前页的显示索引
            break;
        case("prev"):
            if (Gr.CurrentPageIndex > 0)//如果大于0,当前索引减1
                Gr.CurrentPageIndex--;
            break;

        case("next"):
            if (Gr.CurrentPageIndex < (Gr.PageCount - 1))//如果当前页小于总面数,当前页加1
                Gr.CurrentPageIndex++;
            break;
        case("last"):
            Gr.CurrentPageIndex = Gr.PageCount - 1;//如果当前页等于总页数,则退出,不执行,PageCount-1是因为索引从0开始的
            break;
        default:
            Gr.CurrentPageIndex = Convert.ToInt32(s_arg);
            break; 
      
    }

}


  #endregion

 #region 用于go按钮转向页


    public static void go_to(TextBox goto_text, DataGrid Gr)
    {

        if (goto_text.Text.Trim() != "")
                    {

                        int index = Int32.Parse((goto_text.Text.Trim())) - 1;
            if(index>=0&&index<Gr.PageCount)
            {
                Gr.CurrentPageIndex = index;  //取出的goto_text的值,就等于当前页    
        
           
           
            }


        }
  


    }


    #endregion

   #region 判断是否为数字

    public static bool IsNumber(string TextValue)
    {
        try
        {
            int n = Convert.ToInt32(TextValue);
            return true;
        }
        catch
        {
            return false;
        }
    }
   

    #endregion

 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB DataGrid分页 请看: 数据库:test2000.mdb 表:numbers 字段:Id(自动编号),anumber(数字) 因为DataGrid控件我们采用直接绑定记录集来显示数据.所以分页处理我们采用了间接的办法,定义另一个记录集objrs,将分页后的记录集付给objrs.然后绑定DataGrid ''效果还不错 , 我加了详细地注释,像pagesize, AbsolutePage的用法可参考msdn VB中新建工程,form中添加DataGrid控件,按钮cmdPrevious和cmdNext,文本框txtPage ''引用microsoft active data object 2.x object library Option Explicit Dim conn As ADODB.Connection Dim lCurrentPage As Long Private Sub cmdNext_Click() lCurrentPage = lCurrentPage + 1 Call Loadcontrol(lCurrentPage) End Sub Private Sub cmdPrevious_Click() If lCurrentPage > 1 Then lCurrentPage = lCurrentPage - 1 Call Loadcontrol(lCurrentPage) End If End Sub Private Sub Form_Load() Set conn = New ADODB.Connection conn.CursorLocation = adUseClient conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test2000.mdb;" lCurrentPage = 1 Call Loadcontrol(lCurrentPage) End Sub Private Sub Loadcontrol(lPage As Long) Dim adoPrimaryRS As ADODB.Recordset Dim lPageCount As Long Dim nPageSize As Integer Dim lCount As Long ''每页显示的纪录 nPageSize = 10 Set adoPrimaryRS = New ADODB.Recordset adoPrimaryRS.Open "select * from numbers", conn, adOpenStatic, adLockOptimistic adoPrimaryRS.PageSize = nPageSize ''页数 lPageCount = adoPrimaryRS.PageCount If lCurrentPage > lPageCount Then lCurrentPage = lPageCount End If adoPrimaryRS.AbsolutePage = lCurrentPage ''定义另一个记录集 Dim objrs As New ADODB.Recordset ''添加字段名称 For lCount = 0 To adoPrimaryRS.Fields.Count - 1 objrs.Fields.Append adoPrimaryRS.Fields(lCount).Name, adVarChar, adoPrimaryRS.Fields(lCount).DefinedSize Next ''打开记录集 objrs.Open ''将指定记录数循环添加到objrs中 For lCount = 1 To nPageSize objrs.AddNew objrs!id = adoPrimaryRS!id objrs!anumber = adoPrimaryRS!anumber adoPrimaryRS.MoveNext Next ''绑定 Set DataGrid1.DataSource = objrs ''在文本框显示页数 txtPage = lPage & "/" & adoPrimaryRS.PageCount End Sub Private Sub Form_Unload(Cancel As Integer) If Not conn Is Nothing Then conn.Close End If Set conn = Nothing End Sub ‘文本框中输入页数,回车跳转到指定位置 Private Sub txtPage_KeyDown(KeyCode As Integer, Shift As Integer) lCurrentPage = Val(txtPage.Text) Call Loadcontrol(lCurrentPage) End Sub

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值