PDA

View Full Version : نمایش لینک مطلب بعدی و قبلی



EnKamran
جمعه 13 دی 1392, 22:54 عصر
سلام.
جریان از این قراره که میخوام زیر هر مطلب لینک مطلب بعدی و قبلی رو هم داشته باشم.
خوب وقتی مه رکوردها پشت سر هم باشن مشکلی نیست آی دی رکورد حاظر رو یکی کم و زیاد میکنیم میشه قبلی و بعدی اما وقتی این وسط یه رکورد حذف شده باشه نمیشه.
می خوام ببینم راهش چیه؟

fri jun
جمعه 13 دی 1392, 23:08 عصر
فک کنم باید یه تابع بنویسی تو sql server که بتونه ID رکورد بعدی رو بدست بیاره .
همچنین کنترل کنی به وسیله این تابع که کی گزینه بعدی و قبلی غیر فعال بشن

EnKamran
جمعه 13 دی 1392, 23:21 عصر
کوئریش رو نیاز دارم. والا یه چیزایی پیدا کردم گویا مشکل دارن

fri jun
جمعه 13 دی 1392, 23:38 عصر
نباید زیاد سخت باشه ، ID رو به عنوان ورودی بگیر

بعد + 1 کن

و بزار تو شرط که ایا همچین ID وجود داره یا نه

اگه null باشه یعنی اون ID وجود نداره ، پس دوباره یکی به ورودی اضافه میکنی (تو یه حلقه بزار)

انقد میری جلو تا به ID برسی و تمام

فقط اونجای که داری null بدون رو چک می کنی این رو هم چک کن که اول و اخر رکورد ها هستی یا نه

Alfred188
جمعه 13 دی 1392, 23:49 عصر
سلام، پیشنهاد من اینه که شما در مرتبه ی اول بیاید و یه SELECT کلی انجام بدید و ID ها رو توی یه متغیر ایندکس کنید و از طریق اون متغییر کارتون رو پیش ببرید. یعنی به مقدار ایندکستون اضافه یا کم کنید و مقدار id رو بخونید و از طریق اون درخواست رو به بانک بفرستید.

EnKamran
شنبه 14 دی 1392, 00:07 صبح
پیشنهاد اول که خودم هم همین کارو کردم.
دوم هم که شما فکن حالا تعداد رکوردهات زیاد بشه خوب زیاد جالب نیست.

EnKamran
شنبه 14 دی 1392, 00:49 صبح
var nextRecord =
context.Data1.OrderBy(i => i.ID)
.AsEnumerable()
.SkipWhile(i => i.ID != id)
.Skip(1)
.FirstOrDefault();
And :


var previous =
context.Data1.OrderByDescending(i => i.ID)
.AsEnumerable()
.SkipWhile(i => i.ID != id)
.Skip(1)
.FirstOrDefault();

barzin144
شنبه 14 دی 1392, 00:49 صبح
Name----ID
1-------a
2-------b
3-------c
4-------d
6-------f
8-------e
9-------g

فرض این جدول مطالب باشه . در کد زیر هم مطلب F رو به عنوان مطلب فعلی فرض کنیم ،مطلب قبلی و بعدی رو میده اینجوری




declare @CurrentRow int
set @CurrentRow=(select row from (select row_number() over (order by ID) as row,ID,Name from Table_1 ) t where t.Name='f')

--Pre ID
select * from (select row_number() over (order by ID) as row,ID,Name from Table_1 ) t where t.row=@CurrentRow-1
--Next ID
select * from (select row_number() over (order by ID) as row,ID,Name from Table_1 ) t where t.row=@CurrentRow+1