ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DataList控件翻页取数据

DataList控件翻页取数据

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-02-25 16:42:30 0 删除 编辑

写一个调用的过程:

1 )aspx页面

    ItemStyle-HorizontalAlign="Center" nDeleteCommand="DataList1_DeleteCommand"
   Width="97%">
   
    
     
      编号
     
      登录名称
     
     
      显示名称
     
     
      性别
     
     
      职位
     
     
      办公电话
     
     
      手机
     
     
      电子邮件
      <%--style="display: <%=GetStateValue("A002") %>"--%>

      修改
     
     <%--style="display: <%=GetStateValue("A005") %>"--%>
      为用户赋角色
     
     <%--style="display: <%=GetStateValue("A003") %>"--%>
      删除
    
   
   
    
     
      <%#Eval("UserID")%>
     
     
      <%#Eval("UserName")%>
     
     
      <%#Eval("RealName")%>
     
     
      <%#Eval("Sex").ToString() == "0" ? "男" : "女" %>
     
     
      <%#Eval("Pos")%>
     
     
      <%#Eval("OfficeTel")%>
     
     
      <%#Eval("MobilePhone")%>
     
     
      <%#Eval("Email")%>
     
     <%-- style="display: <%=GetStateValue("A002") %>"--%>
      ">
       

     <%-- style="display: <%=GetStateValue("A005") %>"--%>
      ">
       

     <%-- style="display: <%=GetStateValue("A003") %>"--%>
             CommandName="Delete" ImageUrl="http://images.cnblogs.com/houtai_44.gif" nClientClick="javascript.:return confirm('确定要删除此行记录么?')" />
     
    
   

   
   
  
     CustomInfoHTML="记录总数:%RecordCount%  总页数:%PageCount% 当前页:%CurrentPageIndex%"
   FirstPageText="[首页]" HorizontalAlign="Right" InputBoxStyle="width:19px" LastPageText="[尾页]"
   meta.:resourceKey="AspNetPager1" NextPageText="[下一页]" nPageChanged="AspNetPager1_PageChanged"
   PageSize="10" PrevPageText="[上一页]" ShowCustomInfoSection="Left" ShowNavigationToolTip="True"
   Style="font-size: 13px" UrlPaging="True" Width="760">
  

2 ) aspx.cs 后台绑定数据

 #region 绑定数据列表
        protected override void BindData()
        {
            string where = "";
            if (!string.IsNullOrEmpty(txtKeyWord.Text.Trim()) && txtKeyWord.Text.Trim() != TextBoxWatermarkExtender1.WatermarkText)
            {
                where += " UserName like '%" + txtKeyWord.Text.Trim() + "%' ";
            }
            DataSet ds = DalHelper.Accounts_Users.UserGetList(this.AspNetPager1.PageSize, this.AspNetPager1.CurrentPageIndex - 1, where);
            int recountCount = Convert.ToInt32(ds.Tables[1].Rows[0][0]);
            AspNetPager1.RecordCount = recountCount;
            DataList1.DataSource = ds.Tables[0].DefaultView;
            DataList1.DataBind();
        }
        #endregion

3 ) DAL数据访问层的方法

 ///


        /// 分页获取数据列表
        ///

        public DataSet UserGetList(int PageSize, int PageIndex, string strWhere)
        {
            SqlParameter[] parameters = {
     new SqlParameter("@TableNames", SqlDbType.VarChar, 200),
     new SqlParameter("@PrimaryKey", SqlDbType.VarChar, 100),                 
     new SqlParameter("@PageSize", SqlDbType.Int),
     new SqlParameter("@CurrentPage", SqlDbType.Int),  
     new SqlParameter("@Order", SqlDbType.VarChar, 200),
                   new SqlParameter("@Fields", SqlDbType.VarChar, 200),
                 new SqlParameter("@Filter", SqlDbType.VarChar, 1000),
                 new SqlParameter("@Group", SqlDbType.VarChar, 200)
     };
            parameters[0].Value = " Accounts_Users  ";
            parameters[1].Value = " UserID ";
            parameters[2].Value = PageSize;
            parameters[3].Value = PageIndex;
            parameters[4].Value = " Accounts_Users.UserID DESC ";
            parameters[5].Value = "";
            parameters[6].Value = strWhere;
            parameters[7].Value = "";
            return DbHelperSQL.RunProcedure("UP_GetRecordByPage", parameters, "ds");
        }

4 ) 数据库的调用存储过程


ALTER PROCEDURE [dbo].[UP_GetRecordByPage]
@TableNames VARCHAR(200),    --表名,可以是多个表,但不能用别名
@PrimaryKey VARCHAR(100),    --主键,可以为空,但@Order为空时该值不能为空
@Fields    VARCHAR(200),        --要取出的字段,可以是多个表的字段,可以为空,为空表示select *
@PageSize INT,            --每页记录数
@CurrentPage INT,        --当前页,0表示第1页
@Filter VARCHAR(200) = '',    --条件,可以为空,不用填 where
@Group VARCHAR(200) = '',    --分组依据,可以为空,不用填 group by
@Order VARCHAR(200) = ''  --排序,可以为空,为空默认按主键升序排列,不用填 order by

AS
BEGIN
    DECLARE @SortColumn VARCHAR(200)
    DECLARE @Operator CHAR(2)
    DECLARE @SortTable VARCHAR(200)
    DECLARE @SortName VARCHAR(200)
    IF @Fields = ''
        SET @Fields = '*'
    IF @Filter = ''
        SET @Filter = 'Where 1=1'
    ELSE
        SET @Filter = 'Where ' +  @Filter
    IF @Group <>''
        SET @Group = 'GROUP BY ' + @Group

    IF @Order <> ''
    BEGIN
        DECLARE @pos1 INT, @pos2 INT
        SET @Order = REPLACE(REPLACE(@Order, ' asc', ' ASC'), ' desc', ' DESC')
        IF CHARINDEX(' DESC', @Order) > 0
            IF CHARINDEX(' ASC', @Order) > 0
            BEGIN
                IF CHARINDEX(' DESC', @Order) < CHARINDEX(' ASC', @Order)
                    SET @Operator = '<='
                ELSE
                    SET @Operator = '>='
            END
            ELSE
                SET @Operator = '<='
        ELSE
            SET @Operator = '>='
        SET @SortColumn = REPLACE(REPLACE(REPLACE(@Order, ' ASC', ''), ' DESC', ''), ' ', '')
        SET @pos1 = CHARINDEX(',', @SortColumn)
        IF @pos1 > 0
            SET @SortColumn = SUBSTRING(@SortColumn, 1, @pos1-1)
        SET @pos2 = CHARINDEX('.', @SortColumn)
        IF @pos2 > 0
        BEGIN
            SET @SortTable = SUBSTRING(@SortColumn, 1, @pos2-1)
            IF @pos1 > 0
                SET @SortName = SUBSTRING(@SortColumn, @pos2+1, @pos1-@pos2-1)
            ELSE
                SET @SortName = SUBSTRING(@SortColumn, @pos2+1, LEN(@SortColumn)-@pos2)
        END
        ELSE
        BEGIN
            SET @SortTable = @TableNames
            SET @SortName = @SortColumn
        END
    END
    ELSE
    BEGIN
        SET @SortColumn = @PrimaryKey
        SET @SortTable = @TableNames
        SET @SortName = @SortColumn
        SET @Order = @SortColumn
        SET @Operator = '>='
    END

    DECLARE @type varchar(50)
    DECLARE @prec int
    Select @type=t.name, @prec=c.prec
    FROM sysobjects o
    JOIN syscolumns c on o.id=c.id
    JOIN systypes t on c.xusertype=t.xusertype
    Where o.name = @SortTable AND c.name = @SortName
    IF CHARINDEX('char', @type) > 0
    SET @type = @type + '(' + CAST(@prec AS varchar) + ')'

    DECLARE @TopRows INT
    SET @TopRows = @PageSize * @CurrentPage + 1
    print @TopRows
    print @Operator
    EXEC('
        DECLARE @SortColumnBegin ' + @type + '
        SET ROWCOUNT ' + @TopRows + '
        Select @SortColumnBegin=' + @SortColumn + ' FROM  ' + @TableNames + ' ' + @Filter + ' ' + @Group + ' orDER BY ' + @Order + '
        declare @RecordCount int
        select @RecordCount = count(1) from ' + @TableNames + ' ' + @Filter + ' ' + @Group   +'
        SET ROWCOUNT ' + @PageSize + '
        Select ' + @Fields + ' FROM  ' + @TableNames + ' ' + @Filter  + ' AND ' + @SortColumn + '' + @Operator + '@SortColumnBegin ' + @Group + ' orDER BY ' + @Order + '  
        select  @RecordCount
    ')   
END

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-557800/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5308931