Asp.nete çok hakim değilim. Bir porsedurle sayfalamayı çekiyorum yalnız sayfalamadaki filtreleme sadece o sayfada işlem yapıyor örn: 30 sayfa var her sayfada 10 ürün 300 toplam ürün var azdan çoka fiyata göre listele dendiğinde kaçıncı sayfadaysan sadece o sayfadakileri sıralıyor bu 30 sayfada 300 üründe yapmasını ve yeniden sayfalamasını istiyorum.
Sql prosedur kodum.
ALTER PROCEDURE [dbo].[GetCustomersPageWise]
@PageIndex INT = 1,
@PageSize INT = 15,
@orderColumn int,
@orderdir nvarchar(10),
@RecordCount INT OUTPUT
AS
BEGIN
SELECT ROW_NUMBER() OVER
(
ORDER BY [UrunID] ASC
)AS RowNumber,
Urunler.UrunFiyati,Urunler.StokKodu, dbo.Urunler.UrunAdi, dbo.Urunler.Nekadardandustu,
dbo.Urunler.Hit,dbo.Urunler.UrunDetay, dbo.Urunler.UrunId, dbo.Urunler.EnCokSatanlar, dbo.Urunler.Indirimdekiler,
dbo.Urunler.Resmi2, dbo.Urunler.Resmi, dbo.Urunler.Onay,
dbo.Urunler.Vitrin, dbo.UrunKategoriler.UrunKategoriAdi
INTO #Results FROM dbo.Urunler INNER JOIN dbo.UrunKategoriler ON dbo.Urunler.UrunKategoriId = dbo.UrunKategoriler.UrunKategoriId order by
CASE WHEN @orderColumn = 1 AND @orderdir = 'desc' THEN Urunler.UrunAdi END DESC,
CASE WHEN @orderColumn = 1 AND @orderdir = 'asc' THEN Urunler.UrunAdi END asc,
CASE WHEN @orderColumn = 2 AND @orderdir = 'desc' THEN cast(Urunler.UrunFiyati as int) END DESC,
CASE WHEN @orderColumn = 2 AND @orderdir = 'asc' THEN cast(Urunler.UrunFiyati as int) END asc
SET NOCOUNT ON;
SELECT @RecordCount = COUNT(*)
FROM #Results
SELECT * FROM #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results
END
yeterli gelmez ise diğer aspx ve aspx.cs kodlarımıda paylaşabilirim
Toplam 1 cevap
Bu kod kalabalığın yerine şu mantıkla da yapabilirsin. Veritabanında ücretler diye kolonun olsun buradaki tüm ücretleri bir değişkene aktarıp sayısal olarak karşılaştırarak büyükten küçüğe doğru sıralayabilirsin.