• 【经验分享】DataList控件翻页取数据


    写一个调用的过程:

    1 )aspx页面

     <asp:DataList ID="DataList1" runat="server" CssClass="lihoutaikuang" HeaderStyle-HorizontalAlign="Center"
       ItemStyle-HorizontalAlign="Center" OnDeleteCommand="DataList1_DeleteCommand"
       Width="97%">
       <HeaderTemplate>
        <tr>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif" height="29">
          <b>编号</b></td>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif">
          <b>登录名称</b>
         </td>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif">
          <b>显示名称</b>
         </td>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif">
          <b>性别</b>
         </td>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif">
          <b>职位</b>
         </td>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif">
          <b>办公电话</b>
         </td>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif">
          <b>手机</b>
         </td>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif">
          <b>电子邮件</b></td>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif"> <%--style="display: <%=GetStateValue("A002") %>"--%>

          <b>修改</b>
         </td>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif" ><%--style="display: <%=GetStateValue("A005") %>"--%>
          <b>为用户赋角色</b>
         </td>
         <td align="center" background="http://www.cnblogs.com/images/houtai_51.gif" ><%--style="display: <%=GetStateValue("A003") %>"--%>
          <b>删除</b></td>
        </tr>
       </HeaderTemplate>
       <ItemTemplate>
        <tr>
         <td align="center" class="lihoutaidots" height="35">
          <%#Eval("UserID")%>
         </td>
         <td align="center" class="lihoutaidots">
          <%#Eval("UserName")%>
         </td>
         <td align="center" class="lihoutaidots">
          <%#Eval("RealName")%>
         </td>
         <td align="center" class="lihoutaidots">
          <%#Eval("Sex").ToString() == "0" ? "男" : "女" %>
         </td>
         <td align="center" class="lihoutaidots">
          <%#Eval("Pos")%>
         </td>
         <td align="center" class="lihoutaidots">
          <%#Eval("OfficeTel")%>
         </td>
         <td align="center" class="lihoutaidots">
          <%#Eval("MobilePhone")%>
         </td>
         <td align="center" class="lihoutaidots">
          <%#Eval("Email")%>
         </td>
         <td align="center" class="lihoutaidots"><%-- style="display: <%=GetStateValue("A002") %>"--%>
          <a href="<%#Eval("UserID","UserEdit.aspx?UserID={0}") %>">
           <img border="0" height="15" src="http://www.cnblogs.com/images/houtai_42.gif" width="16" /></a></td>
         <td align="center" class="lihoutaidots"><%-- style="display: <%=GetStateValue("A005") %>"--%>
          <a href="<%#Eval("UserID","../Role/UserRoleManage.aspx?UserID={0}") %>">
           <img border="0" height="15" src="http://www.cnblogs.com/images/houtai_42.gif" width="16" /></a></td>
         <td align="center" class="lihoutaidots"><%-- style="display: <%=GetStateValue("A003") %>"--%>
          <asp:ImageButton ID="ImageButton1" runat="server" CommandArgument='<%#Eval("UserID")%>'
           CommandName="Delete" ImageUrl="http://www.cnblogs.com/images/houtai_44.gif" OnClientClick="javascript:return confirm('确定要删除此行记录么?')" />
         </td>
        </tr>
       </ItemTemplate>
       <ItemStyle HorizontalAlign="Center" />
       <HeaderStyle HorizontalAlign="Center" />
      </asp:DataList>
      <webdiyer:AspNetPager ID="AspNetPager1" runat="server" AlwaysShow="True" CssClass="listpage"
       CustomInfoHTML="记录总数:<font color='blue'><b>%RecordCount%</b></font>  总页数:<font color='blue'><b>%PageCount%</b></font> 当前页:<font color='red'><b>%CurrentPageIndex%</b></font>"
       FirstPageText="[首页]" HorizontalAlign="Right" InputBoxStyle="19px" LastPageText="[尾页]"
       meta:resourceKey="AspNetPager1" NextPageText="[下一页]" OnPageChanged="AspNetPager1_PageChanged"
       PageSize="10" PrevPageText="[上一页]" ShowCustomInfoSection="Left" ShowNavigationToolTip="True"
       Style="font-size: 13px" UrlPaging="True" Width="760">
      </webdiyer:AspNetPager>

    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数据访问层的方法

     /// <summary>
            /// 分页获取数据列表
            /// </summary>
            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

  • 相关阅读:
    模型绑定功能
    接口返回的内容
    跨平台的ASP.NET Core简介
    NLog如何打印日志(.Net5)
    注意力创造价值;
    Restful接口的介绍
    电脑设置双屏显示(windows)
    Linq多集合连接
    调试时才执行的代码
    mvc4 路由匹配测试
  • 原文地址:https://www.cnblogs.com/a311300/p/1397310.html
Copyright © 2020-2023  润新知