Blog Content

    티스토리 뷰

    DB SP(프로시저)를 이용해서 페이징 처리 하는 예제 입니다. -2-

    반응형

    사용 될 프로시저 입니다.

    CREATE PROC USER_LIST
    (
           @ROW_START          INT,
           @ROW_END            INT
    )
    AS
           Select *From
           (
                 Select ROW_NUMBER() Over (Order By Num Asc) As Row_Num,
                 Name From [User]
           )As A
           Where Row_Num Between @ROW_START And @ROW_END
           --Where ROW_NUM >= @ROW_START And ROW_NUM <= @ROW_END
          
    @ROW_START 는 시작번호
    @ROW_END 는 마지막 번호

    ROW_NUMBER()는 MS_SQL 2005부터 추가된 걸로 알고있습니다.

    [참고] http://msdn.microsoft.com/ko-kr/library/ms186734(SQL.90).aspx



    aspx 웹 페이지 추가 후 디자인 해주세요.

    <asp:GridView ID="Grid_List" runat="server" AutoGenerateColumns="false" Width="100%">

      <Columns>

        <asp:TemplateField HeaderText="">

          <ItemTemplate>

            <asp:Label ID="lblNum" runat="server" Text='<%# Eval("Row_Num") %>'></asp:Label>

          </ItemTemplate>

        </asp:TemplateField>

     

        <asp:TemplateField HeaderText="">

          <ItemTemplate>

            <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %'></asp:Label>

          </ItemTemplate>

        </asp:TemplateField>

      </Columns>

    </asp:GridView>




    추가한 aspx 웹 페이지의 cs 코드페이지에서 코드 작성

    protected void Page_Load(object sender, EventArgs e)

    {
      if (!IsPostBack)

      {
        Database db = DatabaseFactory.CreateDatabase("연결문자열 이름");

        DbCommand cmd = db.GetStoredProcCommand("USER_LIST");

     

        db.AddInParameter(cmd, "@ROW_START", DbType.Int32, 1);

        db.AddInParameter(cmd, "@ROW_END", DbType.Int32, 10);

     

        DataSet ds = db.ExecuteDataSet(cmd);

        gvList.DataSource = ds;

        gvList.DataBind();
      }
    }

    1,10 으로 주면... 1부터 10까지 나오고... 11, 20을 주면 11부터 20까지 나옵니다.

    1번 페이지 -> 1, 10
    2번 페이지 -> 11, 20
    3번 페이지 -> 21, 30 으로 주면 되겠네요...무지무지 간단하게 했습니다...

    끝~

    반응형

    Comments