لود شدن اطلاعات از دیتابیس هنگام اسکرول شدن صفحه در Asp.Net MVC 5
0 0

لود شدن اطلاعات از دیتابیس هنگام اسکرول شدن صفحه در Asp.Net MVC 5


لود شدن اطلاعات از دیتابیس هنگام اسکرول شدن صفحه در Asp.Net MVC 5

در این پست آموزش نحوه نمایش اطلاعات از دیتابیس به هنگام اسکرول شدن صفحه در Asp.Net MVC 5 را قرار داده ایم.

برای این کار ابتدا یک کنترلر به نام LoadingData ایجاد کنید و کدهای داخل آن را به صورت زیر تغییر دهید.

public class LoadingDataController : Controller
{
    ApplicationDbContext db = new ApplicationDbContext();

    // GET: LoadingData
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult GetData(int pageIndex, int pageSize)
    {
        db.Configuration.LazyLoadingEnabled = false;

        var skipRecords = pageIndex * pageSize;
        var query = (from p in db.Posts
                     orderby p.PostId descending
                     select p)
                     .Skip(skipRecords)
                     .Take(pageSize);

        return Json(query.ToList(), JsonRequestBehavior.AllowGet);
    }
}

اگر به کدهای بالا نگاه کند یک اکشن متد به نام index داریم که فقط یک view را نمایش می دهد. بس با کلیک راست بر روی نام اکشن متد index یک view برای آن ایجاد کنید.

اکشن متد GetData

کار این اکشن متد ارسال اطلاعات به صورت json می باشد.

اکشن متد GetData دو ورودی از نوع int دریافت می کند .

pageIndex

شمار صفحه را مشخص می کند.

pageSize

تعداد نمایش اطلاعات در هر صفحه را مشخص می کند.

اگر به کوئری مورد نظر نگاه کنید از دو دستور skip و take استفاده شده از skip برای نادیده گرفتن قسمتی از داده استفاده می شود و از take برای نمایش تعداد سطرهای مورد نظر استفاده می شود.

نکته:

زمانی که از دستور skip استفاده می کنید حتما باید از دستور orderby هم استفاده کنید که در اینجا ما داده را به صورت descending مرتب سازی کردیم.

کدهای قسمت view

@{
    ViewBag.Title = "Loading Data";
}


<div id="container">
</div>
<div id="progress" class="text-center" style="display:none">
    <h4>در حال بارگذاری</h4>
    <img src="~/Images/loadingAnimation.gif" class="img-responsive img-thumbnail" />
</div>


@section scripts
{
    <script type="text/javascript" language="javascript">

        var pageSize = 10;
        var pageIndex = -1;
        $(document).ready(function () {
            GetData();

            $(window).scroll(function () {
                if ($(window).scrollTop() ==
                   $(document).height() - $(window).height()) {
                    GetData();
                }
            });

        });

        function GetData() {
            pageIndex++;
            $.ajax({
                type: 'GET',
                url: '/Home/GetData',
                data: { "pageindex": pageIndex, "pagesize": pageSize },
                dataType: 'json',
                success: function (data) {
                    if (data != null) {
                        for (var i = 0; i < data.length; i++) {
                            $("#container").append('<h1>"' + data[i].PostName + '"</h1>');
                        }
                    }
                },
                beforeSend: function () {
                    $("#progress").show();
                },
                complete: function () {
                    $("#progress").hide();
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert(jqXHR + textStatus + errorThrown);
                }
            });
        }
    </script>
}

در کدهای بالا یک دیو با آی دی container قرار دادیم که هنگام نمایش اطلاعات داخل این دیو نمایش دهیم. سپس یک دیو دیگر به آی دی progress قرار دادیم و همچنین یک تصویر داخل آن قرار دادیم که در حالت معمولی این دیو نمایش داده نمی شود و هنگام اسکرول شدن صفحه این دیو نمایش داده می شود.

حال به بررسی کدهای jquery می پردازیم.

ابتدا دو متغیر به نام pageSize و pageIndex تعریف کردیم و مقدار اولیه pageSize را برابر 10 قرار دادیم که یعنی هنگام نمایش اطلاعات هر دفعه 10 رکورد را نمایش دهد.

ابتدا تابع GetData را فراخوانی می کنیم تا اطلاعات 10 سطر اول را نمایش دهیم. سپس زمانی که اسکرول صفحه به سمت پایین کشیده شود دوباره تابع GetData را فرخوانی می کنیم.

تابع GetData

Type : نوع داده ارسالی را مشخص می کند که از نوع get می باشد.

url : آدرس اکشن متد مورد نظر را مشخص می کنیم.

Data : داده با داده های ارسالی به سمت سرور را در این قسمت مشخص می کنیم. ما در این قسمت pageSize و pageIndex را به به اکشن متد GetData ارسال می کنیم.

در صورتی که اطلاعات ارسالی از سمت سرور نال نباشد توسط یک دستور for آن را نمایش می دهیم. ما در این قسمت فقط نام پست را نمایش می دهیم.

در نهایت بعد از خاتمه حلقه for یک واحد به pageIndex اضافه می کنیم تا در دفعه بعد 10 رکورد بعدی را نمایش دهیم.

دانلود

نویسنده حسین فتحی
گروه مطلب MVC
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۱۶ شهریور ۱۳۹۴
منبع ایران گنج
تعداد نظرات ۲
قیمت کاربران VIP
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.
خرید VIP
امکان خرید از درگاه های بانکی و حساب مجازی

برای دانلود بعد از خرید به همین صفحه برگردید تا لینک های دانلود نمایش داده شود

نظر / سوال

Captcha
نظرات کاربران

  • arman

    آموزش نصف هست ! این ویو مربوط به کدام اکشن هست ؟ موقع اجرا ارورمیده

    پاسخ
    • مدیر

      با سلام و درود

      همش یک ویو هست اونم ایندس تو توضیجات هم گفته شده

      پاسخ