zoukankan      html  css  js  c++  java
  • 初学ASP.NET分页控件

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;

    namespace MyComplexControls
    {
        [DefaultProperty(
    "Text")]
        [ToolboxData(
    "<{0}:MyNavigation runat=server></{0}:MyNavigation>")]
        
    public class MyNavigation : WebControl,INamingContainer
        
    {
            
    创建控件对象

            
    自定义属性

            
    定义方法
        }


        
    public enum ControlType
        

            DataList,
            GridView
        }


        
    public enum ButtonType
        

            LinkButton,
            ImageButton
        }

    }



    存储过程

    create  PROC proc_Navigation
    @tableName varchar(
    100), --要分页显示的表名
    @PageCurrent 
    int=1--要显示的页码
    @PageSize 
    int=10--每页的大小(记录数)
    @FieldShow nvarchar(
    1000)=''--以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段
    @FieldOrder nvarchar(
    1000)=''--以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC,用于指定排序顺序
    @Where    nvarchar(
    1000)=''--查询条件
    @PageCount 
    int output
    as
      SET XACT_ABORT ON           
    -- 打开 try功能 
      BEGIN TRY             
    --开启事务
        begin tran
      
    /***(游标)获取表主键(多个用逗号分隔)***/
      declare @keyName varchar(
    200)
      declare @name varchar(
    200)
      
    set @keyName=''
      declare mycursor cursor
      
    for  
        select column_name from information_schema.key_column_usage 
       
    where table_name = @tableName and constraint_name like 'PK_%'
        open mycursor
        fetch mycursor into @name
        
    while @@fetch_status<>-1
       
    if @@fetch_status <>-2
         begin
          
    set @keyName = @keyName + @name + ',' 
          fetch mycursor into @name
         end  
        close mycursor
        deallocate mycursor
      
    set @keyName = subString(@keyName,1,len(@keyName)-1)


      
    /***设置要显示的字段***/
      declare
      @FieldShow1 varchar(
    1000)

      
    if len(@FieldShow)=0
       begin
        
    set @FieldShow1 = ' * '      --输入的要显示的字段为空字符串时,设置为*
       end
      
    else
       begin
        
    set @FieldShow1 = @FieldShow    --将要显示的字段名赋值给变量@FieldShow1
       end

      
    /***设置排序字段***/
      declare 
      @FieldOrder1 varchar(
    100)

      
    if len(@FieldOrder) = 0
       begin
        
    set @FieldOrder1 = ''
       end
      
    else
       begin
        
    set @FieldOrder1 = ' order by '+@FieldOrder
       end

      
    /***设置where条件***/
      declare 
      @where1 varchar(
    1000)
      
    if len(@Where) = 0
       begin
        
    set @where1 = ''
       end
      
    else
       begin
        
    set @where1 = ' where '+@Where
       end

      
    /***写分页sql语句***/
      declare 
      @startnumber 
    int,           --开始行数
      @endnumber 
    int,           --结束行数
      @sql varchar(
    5000)          --分页SQL语句
      
    set @startnumber = (@PageCurrent-1)*@PageSize  --根据每行页数和页数设置开始行数
      
    set @endnumber = @PageCurrent*@PageSize    --根据每行页数和页数设置结束行数         --主键名
         
      
    set @sql = 
      
    'select * from (select row_number() over(order by '+
      @keyName
    +') row_num,'+
      @FieldShow1
    +' from '+
      @tableName
    +
      @where1 
    +')tablename where row_num > '+
      convert(varchar(
    5),@startnumber)+' and row_num <= '+
      convert(varchar(
    5),@endnumber)+
      @FieldOrder1       
    --设置分页SQL语句
      
      print @sql
      exec (@sql)

      
    /***输出参数@PageCount***/
      IF @PageCount IS NULL
       BEGIN
        DECLARE @text nvarchar(
    4000)
        SET @text
    =N'SELECT @PageCount=COUNT(*) '
         
    +N' FROM '+@tableName
         
    +N'  '+@where1
        EXEC sp_executesql @text,N
    '@PageCount int OUTPUT',@PageCount OUTPUT
        SET @PageCount
    =(@PageCount+@PageSize-1)/@PageSize
       END
     commit tran            
    --提交事务
        print 
    'commited'  
      END TRY                         
      BEGIN CATCH  
        rollback            
    --事务回滚
        print 
    'rolled back'  
      END CATCH 
    go

    declare @a 
    int
    exec proc_Navigation 
    'aa',1,8,'','','',@a output
    print @a

  • 相关阅读:
    Django 安装步骤
    Django day01 web应用程序 , http协议
    如何让 vue 在 sublime 中变成彩色的
    HTML 14 JS事件
    HTML中常用的颜色词汇
    HTML 13 常用构造函数( 类 )
    sublime 的快捷键大全
    python 46 盒模型 与盒模型布局
    python 46 边界圆角 、a_img_list标签 、伪类选择器
    python 46 css组合选择器 及优先级 、属性选择器
  • 原文地址:https://www.cnblogs.com/di305449473/p/1239782.html
Copyright © 2011-2022 走看看