C# Asp.net de sayfalama sorunu Sayfalıyorum ama örn. 30 sayfa var hangi sayfadaysan A-Z / Z-A filitreleme sadece o sayfada yapıyor.

hanzalar (1) 7 yıl önce sordu

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


notify (538) 7 yıl önce cevapladı

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.