ASP.NET

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

Godffs 2011. 4. 25. 10:33
반응형

사용 될 프로시저 입니다.

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 으로 주면 되겠네요...무지무지 간단하게 했습니다...

끝~

반응형