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

  • 相关阅读:
    [转]Spring.NET企业架构实践之 NHibernate + Spring.NET + WCF + Windows服务 + Silverlight 中小企业应用架构完整Demo
    [转]用EA 建模设计Blog全过程
    下载页面
    Expression Studio 4 ultimate x86 下载含序列号
    ACS.NET缓存技术
    Case
    再谈C#中的委托,匿名方法和Lambda表达式
    代理服务器的设置
    软件架构师之职责范围和高级软件工程师的职责范围
    WPF博客
  • 原文地址:https://www.cnblogs.com/di305449473/p/1239782.html
Copyright © 2011-2022 走看看