ZDIRY-TUFWT-EBONM-EYJ00-IDBLANTER.COM
ZDIRY-TUFWT-EBONM-EYJ00
BLANTERWISDOM105

Mencari Nilai RowStart dan RowEnd Berdasarkan CurrentPage dan RecordPerPage

1/08/2020
Anda pasti sering melihat suatu paging (penomoran halaman) pada website, atau program pada desktop. Setiap anda klik nomor pada paging maka akan mengarah ke halaman berikutnya. Namun yang menjadi perhatian Agung Panduan adalah penomoran halaman yang menampilkan data yang dibatasi oleh jumlah tertentu dan baris awal dan akhir yang di tampilkan pada page. Misalkan jika jumlah yang dinginkan adalah 10 baris dan hanya page ke-2 yang ditampilkan maka baris yang ditampilkan dari 11 hingga 20.


Apabila anda berharap dapat mengambil data tersebut melalui SQL Server maka anda harus mengambil data berdasarkan RowStart (baris pertama) = 11, dan RowEnd (baris akhir) karena CurrentPage adalah 2 dengan RecordPerPage = 10.
Yang jadi masalah adalah value yang diketahui hanya CurrentPage=2 dan RecordPerPage=10.
Maka untuk mendapatkan RowStart dan RowEnd anda dapat menggunakan rumus di bawah ini,
RowEnd = CurrentPage * RecordPerPage
RowStart = RowEnd - (RecordPerPage - 1)
Jika RowStart dan RowEnd adalah parameter yang akan dikirim ke SQL Server melalui Ajax di Visual Studio C# atau program lainya maka query yang harus dibuat adalah seperti:

JQuery dan Ajax
<script type="text/javascript">
    $('#btnDownload').click(function () {
        var rowstart = null;
        var rowend = null;
       
        rowend = $("#txtCurrentPage").val() * $("#recordPerPage").val();
        rowstart = rowend - ($("#recordPerPage").val() - 1);

        $.ajax({
            type: "POST",
            url: "@Html.Toyota().Page.GetActionUrl("Download")",
                 data: {
                     rowEnd: rowend,
                     rowStart: rowstart
                 },
                 success: function (data) {
                     //Perintah notification Success ataulainya
                 },
                 error: function (returnResult) {
                     //Perintah notification Error ataulainya
                 }
        });
    }); 
</script>

Repository
#region Download
  public IList<Supplier> Download(Supplier supp, long rowStart, long rowEnd)
  {
    dynamic args = new
     {
         RowStart = rowStart,
         RowEnd = rowEnd
      };
    IList<Supplier> Result = Db.Fetch<Supplier>("Supplier/Supplier_Download", args);
            return Result;
   }
#endregion

SQl Server
Declare
       @RowStart int= 1,
       @RowEnd int = 3

select * from (
       SELECT ROW_NUMBER() OVER (ORDER BY nota asc) AS RowNo, *
              FROM (select distinct Nota, Supplier_Code FROM Supplier
                           WHERE 1=1
                       )a
) c
Where 1=1 And [RowNo] between CAST(@RowStart as varchar) and CAST(@RowEnd as varchar)
Share This :

0 Comments